2016-09-24 2 views
-2

이제 단어의 일부분 만 변경하려고하면 어떻게됩니까? "Car"에서 "cah"로, 또는 "Martha"에서 "Marther"로 바뀝니다. 난 그냥 그랬다면 두 번째 경우에서,이 같은 경우 :문자열을 사용하는 루비에서 문장 대체 # gsub

<if sentance.include? "er" 
    user_input.gsub!(/er/, "a") 
end > 

내가 원하지 무엇 인 "마르다"모든 "A" 's을 (를) 걸릴 것이다.

아이디어가 있으십니까? 다른 예제. Replace words in string - ruby

+0

만약'STR ="마사, 빌리 밥이다 '', 당신은 아마 (str.gsub'같은 것을 원하는 경우/( "Marther, Billy-Bob은 어디 있습니까?" '(? <= \ bMarth)'는 긍정적 인 lookbehind *라고 부릅니다. 바꿀 문자 (' "a"')는 단어 분리 ('\ b')와 문자열''Marth "'로 시작하지만 그 부분은 매치의 일부가 아닙니다. 문장에 "Martha"만 포함되어 있다는 것을 알았다면, 나는 "gub"보다는 "sub"를 사용할 수있었습니다. "cah"에 대한 귀하의 언급은 나에게 [Crow Mystery] (https://www.reddit.com/r/Jokes/comments/1l888r/the_crow_mystery/)를 상기 시켰습니다. –

+1

문법을보다 잘 정의해야합니다.이 규칙은 이러한 변환이 수행되는 규칙입니다. 마지막으로'a'입니까? – tadman

+0

그 까마귀 농담은 훌륭합니다. 기본적으로 여기에서의 나의 목표는 기본 스피치에서 New England Accent로 텍스트 입력 변환기를 만드는 것입니다. 그래서 그 규칙들을 사용해서, 나는 정말로 단어의 끝에만 관심이 있습니다; 특히 As 또는 ER로 끝나는 단어는 모국어의 스왑으로 간주됩니다. $는 효과가있을 수 있지만 줄의 끝에서 무엇을 의미합니까? 문자열에서 As로 끝나는 단어를 검색합니까? 아니면 문자열의 마지막 단어 만 가져 오나요? 아니면 그 문자열이 \ z입니까? –

답변

0

귀하의 예와 코드는 정확히 반대되는 결과를 나타냅니다. 당신이 "어"와 마르다의 마지막 "A", 이것은 교체해야을 대체 할 가정 '은'문자열의 끝에 :

user_input.gsub!(/a$/,'er') 

와 문자열이 "어디 마사, 빌리 밥 경우

? "B \

user.gsub!(/a\b/,'er') 

단어의 끝 또는 시작하는 정규이다

+0

'a $'는 줄의 끝이고 반드시 문자열의 끝이 아닐 것입니다 (즉,'a \ z'). 이 경우 중요하지 않지만 다른 상황 (예 : 데이터 유효성 검사)에서는 보안 구멍이 될 수 있으므로 잘 알고 있어야합니다. –

+0

좋은 지적 Henrik – Sid

관련 문제