嘿,我正在使用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!(/,/,',')运行良好,但现在我意识到有些地方在逗号之前有多个空格。我也需要考虑这个场景。
答案 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."