[英]gsub ASCII code characters from a string in ruby
我正在使用nokogiri来屏蔽一些HTML。 在某些情况下,我得到了一些奇怪的字符,我用以下代码跟踪了这些字符的ASCII码:
@parser.leads[0].phone_numbers[0].each_byte do |c|
puts "char=#{c}"
end
有问题的字符的ASCII码为194和160。
我想以某种方式解析这些字符。
我尝试了以下代码,但它不起作用。
@parser.leads[0].phone_numbers[0].gsub(/160.chr/,'').gsub(/194.chr/,'')
谁能告诉我如何实现这一目标?
我在尝试在“修剪”字符串时去掉不可见的字符时发现了这个问题。
s.strip
没有为我工作,我发现不可见字符有ord
数194
上面的方法都没有为我工作,但后来我发现“ 将非破坏空间转换为Ruby中的空格 ”问题说:
使用
/\ /
匹配不间断空格:s.gsub(/\ /, ' ')
将所有不间断空格转换为常规空格使用
/[[:space:]]/
匹配所有空格,包括Unicode空格,如非中断空格。 这与/\\s/
,它只匹配ASCII空格。
很高兴我找到了! 现在我正在使用:
s.gsub(/[[:space:]]/,'')
这并没有回答如何gsub
特定字符代码的问题,但如果你只是想删除空格,它似乎工作得很好。
您的问题是您想要进行方法调用,而是创建一个Regexp。 您正在搜索并替换由字符串“160”组成的字符串,后跟任何字符,然后是字符串“chr”,然后执行相同操作,除非“160”替换为“194”。
相反,做gsub(160.chr, '')
。
更新(2018):此代码在当前的Ruby版本中不起作用。 请参考其他答案。
你也可以试试
s.gsub(/\xA0|\xC2/, '')
要么
s.delete 160.chr+194.chr
首先想到的是你应该使用gsub! 而不是gsub
gsub返回一个字符串和gsub! 在适当的位置执行替换
我在尝试上述解决方案时遇到“无效的多字节转义”错误,但是针对不同的情况。 当数字大于999时谷歌返回\\ xA0,我想删除它。 所以我所做的是使用return_value.gsub(/ [\\ xA0] / n,“”)代替它,它对我来说非常好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.