2012-01-06 89 views

回答

6

將您的字符串分解爲單個單詞,過濾出短字符串,然後將字符串粘在一起。

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

這不會做OP所要求的,因爲它拒絕雙字母單詞。 – 2012-01-06 19:43:40

+0

是的,你是對的。固定。但他可以弄清楚自己。 :-) – 2012-01-06 19:45:09

+1

不需要參數split()雖然 'puts'one a day'.split.select {| w | w.length> 1} .join('')' – jacobsimeon 2012-01-06 19:47:15

0

這裏是你如何做到這一點:

string = "on a boat" 
result = string.split(' ').reject{|w| w.length < 2 }.join(' ') # => on boat 
0
"once a day".gsub(/\b\w\b/, "").gsub(/\s+/, "") 
# => "once day" 
+2

雙倍空間:-) – 2012-01-06 19:49:37

+0

你可能只是想添加'.gsub(「」,「」)'(兩個空格到一個空間)。 – sawa 2012-01-06 19:56:22

1

這將擺脫2個或1字母的單詞和清理空白。

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