2012-01-06 6 views

답변

6

문자열을 개별 단어로 분리하고 짧은 단어를 분리 한 다음 다시 묶습니다. 여기

puts 'one a day'.split(' ').select{|w| w.length >= 2}.join(' ') 
# => one day 
+0

이것은 두 글자 단어를 거부하기 때문에 OP가 요청한 것을 수행하지 않습니다. –

+0

네, 맞습니다. 결정된. 그러나 그는 자신을 알아낼 수있었습니다. :-) –

+1

split()에 인수가 필요하지 않지만 'puts 'one day'.split.select {| w | w.length> 1} .join ('') – jacobsimeon

0

는 당신이 그것을 할 방법은 다음과 같습니다

0
"once a day".gsub(/\b\w\b/, "").gsub(/\s+/, "") 
# => "once day" 
+2

double space :-) –

+0

'.gsub ("", "")'(두개의 공백 단일 공간으로). – sawa

1

이 2 개 또는 1 글자 단어 제거하고 공백을 정리 얻을 것이다

string = "on a boat" 
result = string.split(' ').reject{|w| w.length < 2 }.join(' ') # => on boat 
. 값의 배열과

str.gsub(/\b\w{1,2}\b/,"").gsub(/\s{2,}/," ").strip

같은 것.

str = ["Dave is a dork", "a John is a name", "Shawn is a or Lindsey", "Shawn or Dave"]

내가 최고의 답변으로 동일한 솔루션에 독립적으로 온 str.map! { |str| str.gsub(/\b\w{1,2}\b/,"").gsub(/\s{2,}/," ").strip}

0

는 는, 그래서 여기뿐만 아니라 영어 단어를 제거하기 위해 문장 부호

string = 'one a day. One 1, 22 333 0. This days o! o' 
p string.split(' ').reject{ |e| i = e.dup; i.gsub!(/\W/, ''); i.length == 1}.join(' ') 

#==> "one day. One 22 333 This days" 
0

을 고려 솔루션입니다 사용해야합니다 \p{L}

'Comment ça va ?'.gsub(/\b\p{L}{1,2}\b/, '').squeeze(' ').strip 
=> "Coment ?" 

Demo

관련 문제