在每次出现特定字符时拆分一个字符串?

时间:2014-05-14 00:00:14

标签: ruby regex string

我想将一系列字符作为字符串传递给函数,让它返回给我,以下字符分割字符串:

@ # $ % ^ & *

如果字符串是

'hey#man^you*are#awesome'

程序返回

'嘿,伙计,你很棒'

我该怎么做?

2 个答案:

答案 0 :(得分:3)

要分割字符串,您可以使用String#split

'hey#man^you*are#awesome'.split(/[@#$%^&*]/)
#=> ["hey", "man", "you", "are", "awesome"]

将它重新组合在一起,您可以使用Array#join

'hey#man^you*are#awesome'.split(/[@#$%^&*]/).join(' ')
#=> "hey man you are awesome"

splitjoin应该是不言自明的。有趣的部分是正则表达式/[@#$%^&*]/,它匹配字符类[...]中的任何字符。上面的代码基本上等同于

'hey#man^you*are#awesome'.gsub(/[@#$%^&*]/, ' ')
#=> "hey man you are awesome"

其中gsub表示"全局替换@#$%^& *中任何出现的空格"。

答案 1 :(得分:0)

您也可以使用String#tr,这样就无需将数组转换回字符串:

'hey#man^you*are#awesome'.tr('@#$%^&*', '       ')
  #=> "hey man you are awesome"