Ruby /\s未转义空格/
我正在处理一些行为奇怪的字符串 ruby中正则表达式中的/s无法识别某些空格Ruby /\s未转义空格/,ruby,regex,whitespace,Ruby,Regex,Whitespace,我正在处理一些行为奇怪的字符串 ruby中正则表达式中的/s无法识别某些空格 "175 75 16C 101/99 R".gsub( /\s/ , 'x' ) => "175 x75 x16C x101/99 xR" 预期结果应该是每个空格都转换为“x” 我试图强制将UTF-8编码为字符串,但也不起作用。我需要一个正则表达式来匹配字符串中的每种空格,并将它们转换为常规空格 编辑: 从我的理解来看,这个问题是你想把所有的空格都转换成x。您当前的正则表达式仅根据搜索AS
"175 75 16C 101/99 R".gsub( /\s/ , 'x' )
=> "175 x75 x16C x101/99 xR"
预期结果应该是每个空格都转换为“x”
我试图强制将UTF-8编码为字符串,但也不起作用。我需要一个正则表达式来匹配字符串中的每种空格,并将它们转换为常规空格
编辑:
从我的理解来看,这个问题是你想把所有的空格都转换成x。您当前的正则表达式仅根据搜索ASCII
/[\t\r\n\f]/
。要支持Unicode,您需要对空白字符使用特殊的Unicode标识符[[:space:]
Unicode正则表达式
"175 75 16C 101/99 R".gsub(/[[:space:]]/ , 'x' )
"175xx75xxx16Cxx101/99xxxxR"
根据,\s
是[\t\r\n\f]
的简写形式(只有几个ASCII空白字符)
如果您的模式包含其他空白字符,例如不间断空格,您可以将
\s
替换为\p{Z}
,这将查找Unicode分隔符字符属性,从而匹配所有字符。对我来说非常合适:“175xx75xxx16cx101/99xxxxR”
我不知道Ruby,但您可以尝试\p{Z}
(所有Unicode空格)。我不知道Ruby与\p{Z}
相比如何处理\s
。请报告以下结果:1)str.gsub(/./){c |(c=~/\s/|仅c.ascii|?'x':'}
和2)str encode('utf-8')。chars.each{c{124;放入c.ord,其中str 75…”
@CarySwoveland c.ord给我160英镑买奇怪的whitespaces@August,当然,如果你从浏览器中复制/粘贴它会起作用……哦,我明白你的意思了,刚刚醒来:/[[:space:]/
字符串没有找到unicode空格吗?我相信你关于[[:space]]
的说法是正确的。我建议你把答案限制在那一点上。请注意,将其应用于从屏幕上刮下的(ASCII)字符串并不是一个测试。感谢您的参考。
"175 75 16C 101/99 R".gsub(/[[:space:]]/ , 'x' )
"175xx75xxx16Cxx101/99xxxxR"