2015-01-10 2 views
0

문장 사이에 공백이있는 문자열이 있습니다. 문자열은 사람이 읽을 수 있도록 고안되었으므로 마침표와 다음 문장의 시작 부분 사이에 공백이 두 개 있어야합니다.Ruby에서 문장 사이에 여분의 공백을 어떻게 제거합니까?

문장 내의 단어 사이의 공백은 하나의 공백으로 남겨 두어야하며 여분의 공백은 제거해야합니다.

Ruby에서 어떻게합니까?

+0

(결정적으로)이를 수행 할 수 없습니다. 통계적으로 올바른 결과를 얻으려면 자연어 처리가 필요합니다. 이런 스레드에 대한 대답으로 합리적으로 넣을 수있는 것보다 훨씬 많은 코드가 필요합니다. – sawa

+0

입력 및 예상 출력 예제를 제공하는 것만 큼 잘 설명하지 못합니다. 또한 시도한 코드 몇 가지를 보여줄 필요가 있습니다. –

답변

2

당신이 문장을 분리 . ! ?를 사용하는 가정하면, 다음, 첫 단어 사이에 그 여분의 공백을 처리 . ! ?gsub 사용 후 두 개의 공백을 추가 squeeze를 사용할 수 있습니다.

p = "The first line. The second line! The third line?" 
p.squeeze(" ").gsub(/([.?!]) */,'\1 ') 
=>"The first linee. The second line! The third line? " 
+0

사실 저는이 방법이 더 좋습니다. –

+0

'squeeze'를 적용했다면 연속 된 공백이 없어집니다. 정규 표현식의'*'는 중복되어 있습니다. 그것은'? '로 대체되어야합니다. – sawa

+0

코드는'Mr._Bean' ('_'은 공백을 나타냄)을'Mr .__ Bean'으로'ie'로'i.__ e .__'로,'Oh man ...'을'Oh man .__ __.__'. – sawa

관련 문제