programing

문자열의 단어 바꾸기 - 루비

newsource 2023. 6. 19. 21:36

문자열의 단어 바꾸기 - 루비

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

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"

루비에서 자바스크립트와 같은 다른 언어들과는 달리 단어 경계는 UTF-8과 호환되므로 라틴 문자가 아닌 언어나 확장된 라틴 문자가 있는 언어에 사용할 수 있습니다.

'сіль у кисіль, для весіль'.gsub(/\bсіль\b/, 'цукор')
=> "цукор у кисіль, для весіль"

다음 방법을 사용할 수 있습니다.

sentence ["Robert"] = "Roger"

그러면 문장은 다음과 같이 됩니다.

sentence = "My name is Roger" # Robert is replaced with Roger

첫째, 루비에서 유형을 선언하지 않으므로 첫 번째 유형이 필요하지 않습니다.string.

문자열에서 단어를 바꾸려면 다음을 수행합니다.sentence.gsub(/match/, "replacement").

언급URL : https://stackoverflow.com/questions/8381499/replace-words-in-a-string-ruby