Tag: 非打印字符

Ruby将不可打印的字符转换为数字

我有一个包含不可打印字符的字符串。 我目前正在做的是用波浪号代替它们: string.gsub!(/^[:print:]]/, “~”) 但是,我实际上想将它们转换为整数值。 我试过这个,但总是输出0 string.gsub!(/[^[:print:]]/, “#{$1.to_i}”) 思考?

如何删除ruby中不可打印/不可见的字符?

有时我在字符串中间有邪恶的不可打印字符。 这些字符串是用户输入,所以我必须让我的程序接收它,而不是尝试更改问题的来源。 例如,它们可以在字符串的中间具有零宽度的无中断空间 。 例如,在解析.po文件时,一个有问题的部分是文件中间的字符串”he is a man of god” 。 虽然一切看似正确,但用irb显示检查: “he is a man of god”.codepoints => [104, 101, 32, 105, 115, 32, 97, 32, 65279, 109, 97, 110, 32, 111, 102, 32, 103, 111, 100] 我相信我知道BOM是什么,我甚至可以很好地处理它。 但是有时我在文件的中间有这样的字符,因此它不是BOM 。 我目前的做法是以一种非常臭的方式删除所有我发现邪恶的角色: text = (text.codepoints – CODEPOINTS_BlACKLIST).pack(“U*”) 我得到的最接近的是这篇post ,它引导我:print: regexp上的选项。 然而这对我没有好处: “m”.scan(/[[:print:]]/).join.codepoints => [65279, 109] […]