删除ruby字符串中逗号之前的空格

时间:2009-12-23 10:23:33

标签: ruby string

嘿,我正在使用reg表达式从ruby字符串中删除括号和它们之间的内容。问题是这有时在逗号之前留下空格。我不知道如何去除这个空间。我一直在玩以下但是它没有工作:

 @char_count = 0
 sentance.each_char{|char| 
   if char == ","
     if sentance[@char_count-1] == 32
       sentance[@char_count-1] = "" 
     end
   end
   @char_count += 1
 }

感谢任何帮助!

编辑:sentance.gsub!(/,/,',')运行良好,但现在我意识到有些地方在逗号之前有多个空格。我也需要考虑这个场景。

7 个答案:

答案 0 :(得分:5)

您可以使用字符串类的gsub方法执行此操作。

s = "this is a string, with some commas with spaces in front ,1 ,2 ,3"
s.gsub(/ ,/, ',')
"this is a string, with some commas with spaces in front,1,2,3"

gsub将返回一个带有空格的新字符串,字符串替换为逗号。 GSUB!将改变字符串。

如果您有时有多个带有逗号的空格,那么您可能希望使用略微修改的正则表达式来捕获多个空格

s.gsub!(/ +?,/, ',')

答案 1 :(得分:2)

根据问题编辑,而不是做

sentance.gsub!(/ ,/, ',')

这样做

sentance.gsub!(/\s+,/, ',')

这将删除逗号

之前的多个空格

答案 2 :(得分:1)

s.gsub(/\s*,/, ',')  

上面的正则表达式将查找任意数量的空格(包括0),后面紧跟逗号。

使用以下测试工具测试你的正则表达式: http://www.gskinner.com/RegExr/

答案 3 :(得分:0)

Ruby有strip功能,这有帮助。 http://railsforphp.com/reference/strings/trim

答案 4 :(得分:0)

sentance.gsub!(/\([^\)]*\)/, '')
sentance.gsub!(/ ,/, ',')

答案 5 :(得分:0)

您还可以在单​​个正则表达式中处理带括号的表达式的删除和前导空格问题:

 sentence.gsub!(/\s*\([^\)]*\)/, '')

这也将处理你有一个带括号的表达式后跟一些其他标点符号(句号,分号,等等)的情况,因为真正的问题是括号表达式和开始表达之前的空格之间的空格。这也将在文本中故意使用',',这不是由删除括号表达式引起的。

答案 6 :(得分:0)

使用下方正则表达式替换单词和标点符号之间的空格

str = "Okay     . They   , say   ? about. how    ;  you                   ! made the following. special? creature react for further questioning details . I loved Pizza . Definitely . So seven . Yes ."

str.gsub(/\s+(?=[.,;?!])/, "")

Output str = "Okay. They, say? about. how;  you! made the following. special? creature react for further questioning details. I loved Peter. Definitely. So seven. Yes."