Ruby - 从字符串中删除短字

时间:2012-01-06 19:34:21

标签: ruby

string = 'one a day'

如何从字符串中删除少于2个字符的单词?

result = 'one day'

6 个答案:

答案 0 :(得分:6)

将你的字符串分成单个单词,过滤掉短字符串,然后将字符串粘合在一起。

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

答案 1 :(得分: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}

答案 2 :(得分:0)

这是你如何做到的:

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

答案 3 :(得分:0)

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

答案 4 :(得分: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"

答案 5 :(得分:0)

为了不仅删除英文单词,您应该使用\p{L}

kill(all)$

y:x^4*log(x);

u:log(x);

v:x^4;

n:4;

lsum(binomial(n,i)*diff(u,x,n-i)*diff(v,x,i),i,[0,1,2,3,4]);

Demo