루비에 문자열이 있습니다.
sentence = "My name is Robert"
복잡한 코드 나 루프를 사용하지 않고이 문장에서 한 단어를 쉽게 바꿀 수있는 방법은 무엇입니까?
답변
sentence.sub! 'Robert', 'Joe'
대체 된 단어가 문장에없는 경우 예외가 발생하지 않습니다 ( []=
변형).
모든 인스턴스를 교체하는 방법?
위의 “Robert”의 첫 번째 인스턴스 만 대체합니다.
모든 인스턴스를 바꾸려면 gsub
/ 를 사용하십시오 gsub!
(예 : “전역 대체”).
sentence.gsub! 'Robert', 'Joe'
위의 모든 Robert 인스턴스를 Joe로 바꿉니다.
답변
자연어 텍스트를 다루고 문자열의 일부가 아닌 단어를 대체해야하는 경우 일반 텍스트 대체로 인해 비참한 결과가 발생할 수 있으므로 gsub에 정규 표현식을 조금씩 추가해야합니다.
'mislocated cat, vindicating'.gsub('cat', 'dog')
=> "mislodoged dog, vindidoging"
정규식에는 단어의 \b
시작 또는 끝과 일치하는 단어 경계가 있습니다 . 그러므로,
'mislocated cat, vindicating'.gsub(/\bcat\b/, 'dog')
=> "mislocated dog, vindicating"
Ruby에서 Javascript와 같은 다른 언어와 달리 단어 경계는 UTF-8과 호환되므로 라틴 이외 또는 확장 라틴 알파벳이있는 언어에 사용할 수 있습니다.
'сіль у кисіль, для весіль'.gsub(/\bсіль\b/, 'цукор')
=> "цукор у кисіль, для весіль"
답변
이 방법으로 시도해 볼 수 있습니다.
sentence ["Robert"] = "Roger"
그러면 문장이됩니다 :
sentence = "My name is Roger" # Robert is replaced with Roger
답변
먼저 Ruby에서 유형을 선언하지 않으므로 첫 번째가 필요하지 않습니다 string
.
문자열에서 단어를 바꾸려면 다음을 수행하십시오 sentence.gsub(/match/, "replacement")
.
답변
