2014-03-03 7 views

답변

6

정규 표현식을 사용하여 :

"world is a better place".scan(/\b[a-z]/i).join 
# => "wiabp" 
"world is a better place".scan(/\b[a-z]/i).join.upcase 
# => "WIABP" 

\b는 단어 경계와 일치합니다. (단어 문자와 단어가 아닌 문자 사이). [a-z]은 알파벳과 일치합니다.

\b[a-z]은 첫 번째 영문자와 일치합니다.

참고 알파벳이 아닌 문자로 시작하는 단어 (?)가 있으면 위의 코드는 작동하지 않습니다. 또한 구두점이 포함 된 단어가 있으면 작동하지 않습니다. 공백이나 하이픈이있는 단어가있는 경우뿐만 아니라

"world is a better place".gsub(/\s*(\S)\S*/, '\1').upcase 
# => "WIABP" 
+1

참고 : (예 : World is 1 better-place.)

UPDATE

그룹을 캡처와 String#gsub을 사용하여 동일한 결과를 얻을 수 그 안에. – sawa

+0

@sawa, 지적 해 주셔서 감사합니다. 나는 그것을 메모에 추가했다. 또한 대체 솔루션을 추가했습니다. – falsetru

관련 문제