从Ruby中的String中删除'\'和其他特殊字符

时间:2017-04-23 17:00:13

标签: ruby string special-characters

首先发布这里很抱歉,如果这是菜鸟材料。我正在尝试将一个复杂的数组破解成一个字符串,我在删除'\'和'''字符时遇到了问题。感谢任何帮助。

目前我有这个:

"\"-6,\", \"\\\"-3-\\\", \\\"1\\\"\", \"\\\"3-\\\", \\\"5\\\"\", \"\\\"7-\\\", \\\"11\\\"\", \"\\\"14-\\\", \\\"15\\\"\", \"\\\"17-\\\", \\\"20\\\"\""

当我想要这个时:

"-6, -3-, 1, 3-, 5, 7-, 11, 14-, 15, 17-, 20"

谢谢!

4 个答案:

答案 0 :(得分:1)

您可以尝试使用each并删除主数组中每个值中的任何不需要的字符,例如:

array.each{|x| x.gsub!(/[^0-9-,]/, '') }.to_s.gsub!(',,', ',')
# => ["-6,-3-,1,3-,5,7-,11,14-,15,17-,20"]

这将获取主数组,并且对于每个值,它使用''正则表达式和{{1}替换任何不是数字的字符,也不替换带有/[^0-9-,]/的连字符或逗号方法,第二个gsub!是替换第一个修改中剩余的双逗号。

我知道并不是那么优雅,但可以帮助你。

答案 1 :(得分:1)

使用String#tr代替gsub,因为trgsub快得多:

arr.select { |x| x.tr!('\\\"',''); x unless x.empty? }.join(",")

答案 2 :(得分:0)

我假设你有一个像:

这样的数组

Arr = [-6, -3-, 1, 3-, 5, 7-, 11, 14-, 15, 17-, 20]

所以尝试join方法:

Arr.join(',') 希望它有所帮助..

答案 3 :(得分:0)

您可以使用:

myArray.map { |item| item.gsub(/\\|"/, "") }.join(",").gsub(",,", ",")