我正在使用nokogiri来屏蔽一些HTML.在某些情况下,我得到了一些奇怪的字符,我用以下代码跟踪了这些字符的ASCII码:
@parser.leads[0].phone_numbers[0].each_byte do |c|
puts "char=#{c}"
end
Run Code Online (Sandbox Code Playgroud)
有问题的字符的ASCII码为194和160.
我想以某种方式解析这些字符.
我尝试了以下代码,但它不起作用.
@parser.leads[0].phone_numbers[0].gsub(/160.chr/,'').gsub(/194.chr/,'')
Run Code Online (Sandbox Code Playgroud)
谁能告诉我如何实现这一目标?
cwd*_*cwd 14
我在尝试在"修剪"字符串时去掉不可见的字符时发现了这个问题.
s.strip对我不起作用,我发现这个看不见的角色有这个ord数字 194
上面的方法都没有为我工作,但后来我发现" 将非破坏空间转换为Ruby中的空格 "问题说:
使用
/\u00a0/匹配非打破空间:s.gsub(/\u00a0/, ' ')将所有非中断空格到正规场所使用
/[[:space:]]/以匹配所有的空白,包括Unicode空白像非换空间.这与之不同/\s/,它只匹配ASCII空格.
很高兴我找到了!现在我正在使用:
s.gsub(/[[:space:]]/,'')
Run Code Online (Sandbox Code Playgroud)
这并没有回答如何使用gsub特定字符代码的问题,但如果你只是想删除空格,它似乎工作得很好.
您的问题是您想要进行方法调用,而是创建一个Regexp.您正在搜索并替换由字符串"160"组成的字符串,后跟任何字符,然后是字符串"chr",然后执行相同操作,除非"160"替换为"194".
相反,做gsub(160.chr, '').
更新(2018):此代码在当前的 Ruby 版本中不起作用。请参考其他答案。
你也可以尝试
s.gsub(/\xA0|\xC2/, '')
Run Code Online (Sandbox Code Playgroud)
或者
s.delete 160.chr+194.chr
Run Code Online (Sandbox Code Playgroud)