2014-06-10 2 views
1

문자열이있어서 모든 특수 문자를 밑줄로 바꾸고 싶습니다.영문자와 숫자 이외의 모든 문자를 밑줄로 바꾸십시오.

다른 말로하면, 나는 26 개의 영문자 (대문자와 소문자)와 0-9와 "_"문자를 원한다.

또한 영어 이외의 문자가 있으며 "_"로 교체해야합니다.

Ruby에서 가장 효과적인 방법은 무엇입니까?

+0

기본 사항이므로이 문서 [in docs] (http://www.ruby-doc.org/core-2.1.2/Regexp.html#class-Regexp-label-Metacharacters+and+Escapes)에서 쉽게 찾을 수 있습니다. – zishe

답변

10

단어가 아닌 모든 문자를 밑줄로 바꾸고 싶은 것처럼 들립니다. 그러므로

result = subject.gsub(/[^\w]/, '_') 

그러나 이것은 개행과 다른 공백 문자를 대체 할 수 있습니까?

하지 않으면 정규식 설명

result = subject.gsub(/[^\w\s]/, '_') 

로 변경

[^\w\s]     # any character except: word characters (a- 
         # z, A-Z, 0-9, _), whitespace (\n, \r, \t, 
         # \f, and " ") 

@CarySwoveland 언급으로, [^\w] 또한 속기 \W로 기록 될 수

.

+1

'[^ \ w]'대신'\ W'를 사용할 수 있습니다. –

+0

@CarySwoveland 네, 맞습니다. OP의 이익을 위해 가능한 한 적은 변경을 한 줄에서 다음 줄로 만들려고했습니다. 메모로 추가했습니다. 언급하는 것이 좋습니다. 감사합니다. :) – zx81

관련 문제