string.sub
은 첫 번째 인스턴스 만 바꾸는 것처럼 보입니다. 모든 패턴을 대체 할 수있는 옵션 또는 다른 옵션이 있습니까? Perl과 같은 정규 표현식에서 사용할 수 있습니까?루비에서 패턴의 모든 인스턴스를 대체하려면 어떻게해야합니까?
... 그리고 하나 말해 줄 수있는 사람을 도대체 왜 string.sub
그냥 첫 경기가 대체됩니까 (I는 R/ㅋ/ㅋ 같은 것이/생각)?
string.sub
은 첫 번째 인스턴스 만 바꾸는 것처럼 보입니다. 모든 패턴을 대체 할 수있는 옵션 또는 다른 옵션이 있습니까? Perl과 같은 정규 표현식에서 사용할 수 있습니까?루비에서 패턴의 모든 인스턴스를 대체하려면 어떻게해야합니까?
... 그리고 하나 말해 줄 수있는 사람을 도대체 왜 string.sub
그냥 첫 경기가 대체됩니까 (I는 R/ㅋ/ㅋ 같은 것이/생각)?
String.gsub 트릭을해야합니다.
인용 문서 :
gsub(pattern, replacement) → new_str
가 두 번째 인수를 대체 패턴 의 모든 발생과 STR의 카피를 돌려줍니다. 패턴은 일반적으로 Regexp입니다. 문자열로 주어지면 정규 표현식 메타 문자가 포함 된 이 문자 그대로 해석됩니다.
\\d
은 백래시와 일치하며 그 다음 숫자는d
입니다.
w00t. 감사. 당신은 sub가 디폴트로 그것을 할 것이고, 첫번째 N 개의 어커런스를 대체하기위한 int param을 가질 것이라고 생각할 것입니다! – DJTripleThreat
DJ : 아니겠습니까? 첫 번째 경기를 바꾸려면 ** SUB ** stitute를 선택하십시오. ** G ** lobal ** SUB ** stitute가 선택 사항입니다. –
자세한 내용은 [매뉴얼 페이지] (http://www.ruby-doc.org/core-2.1.1/String.html#method-i-gsub)를 참조하십시오. –
sub
그냥 패턴의 첫 번째 일치를 대체 내가 왜 설명 할 수 있지만이 문서 (명령 행에서 ri String#sub
에서) 훨씬 더 잘 수행 생각 :
str.sub(pattern, replacement) => new_str
str.sub(pattern) {|match| block } => new_str
Returns a copy of _str_ with the _first_ occurrence of _pattern_
replaced with either _replacement_ or the value of the block.
와우, 나는 루비와 레일을 오랫동안 사용해 왔습니다. 오늘은 게시물 때문에 # 리터를 입력 한 첫 번째 시간이었습니다. 나는 거기에 그 기능이 있다는 것을 몰랐다! 용어를 검색하고 문서를 그런 식으로 찾았습니다. –
를 같은 이유로 그 Perl은 전역 대체를 만들기 위해'g' 한정자가 필요합니다. 모든 것을 대치하면 항상 원하는 것이지만 항상 그런 것은 아닙니다. – Telemachus