문자열이있어서 모든 특수 문자를 밑줄로 바꾸고 싶습니다.영문자와 숫자 이외의 모든 문자를 밑줄로 바꾸십시오.
다른 말로하면, 나는 26 개의 영문자 (대문자와 소문자)와 0-9와 "_"문자를 원한다.
또한 영어 이외의 문자가 있으며 "_"로 교체해야합니다.
Ruby에서 가장 효과적인 방법은 무엇입니까?
문자열이있어서 모든 특수 문자를 밑줄로 바꾸고 싶습니다.영문자와 숫자 이외의 모든 문자를 밑줄로 바꾸십시오.
다른 말로하면, 나는 26 개의 영문자 (대문자와 소문자)와 0-9와 "_"문자를 원한다.
또한 영어 이외의 문자가 있으며 "_"로 교체해야합니다.
Ruby에서 가장 효과적인 방법은 무엇입니까?
단어가 아닌 모든 문자를 밑줄로 바꾸고 싶은 것처럼 들립니다. 그러므로
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
로 기록 될 수
.
'[^ \ w]'대신'\ W'를 사용할 수 있습니다. –
@CarySwoveland 네, 맞습니다. OP의 이익을 위해 가능한 한 적은 변경을 한 줄에서 다음 줄로 만들려고했습니다. 메모로 추가했습니다. 언급하는 것이 좋습니다. 감사합니다. :) – zx81
기본 사항이므로이 문서 [in docs] (http://www.ruby-doc.org/core-2.1.2/Regexp.html#class-Regexp-label-Metacharacters+and+Escapes)에서 쉽게 찾을 수 있습니다. – zishe