[ruby] 문자열에서 단어 바꾸기-Ruby

루비에 문자열이 있습니다.

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").


답변