相关疑难解决方法(0)

使用awk删除字节顺序标记

awk用于删除BOM的脚本(可能是单线程)怎么样?

规格:

  • 在第一个(NR > 1)之后打印每一行
  • 对于第一行:如果以#FE #FF或开头#FF #FE,则删除它们并打印其余部分

unicode awk byte-order-mark

102
推荐指数
4
解决办法
8万
查看次数

如何删除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] 
Run Code Online (Sandbox Code Playgroud)

我相信我知道它BOM是什么,我甚至可以很好地处理它.但是有时我在文件的中间有这样的字符,所以它不是BOM.

我目前的做法是以一种非常臭的方式删除所有我发现邪恶的角色:

text = (text.codepoints - CODEPOINTS_BlACKLIST).pack("U*")
Run Code Online (Sandbox Code Playgroud)

我得到的最接近的是关注这篇帖子,这让我:print:选择了regexp.然而这对我没有好处:

"m".scan(/[[:print:]]/).join.codepoints
 => [65279, 109] 
Run Code Online (Sandbox Code Playgroud)

所以问题是:如何从ruby中的字符串中删除所有不可打印的字符?

ruby encoding non-printing-characters

7
推荐指数
1
解决办法
9137
查看次数