本文主要是介绍java 文本编辑器替换特殊字符_【已解决】替换掉VSCode中显示出的特殊字符:NAK...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
现有一个文件,用VSCode打开,发现里面:
显示出了NAK这种特殊不可见字符:
(注:
之前一直是开启显示控制字符:
所以此处才能看到这些特殊的,不可见的,控制字符的)
NAK
此处需要:
搞清楚NAK的含义
以及:
替换掉:
NAK\d+_\d+NAK
为空
之前自己整理过,
所以去找:
crifan 不可见字符十
进制十六
进制控制
字符转义
字符*说明Ctrl +
下列字母*
2115NAKNegative Acknowledgement(拒绝接收/无响应)U
21是NAK=Negative Acknowledgement(拒绝接收/无响应)
所以接着就是去搞清楚:
VSCode中的正则,如何输入表达
ASCII中特殊的不可见字符NAK
或者说 unicode字符
VSCode 正则 特殊字符
继续参考之前找到的:
->
->
去看看,如何写unicode字符
好像可以参考:\x7F hex character code (exactly two digits)
去写hex 16进制值,试试
ASCII的NAK=10进制是12=16进制是0x15
结果无效:
再去参考:\x{10FFFF} any hex character code corresponding to a Unicode code point
试试unicode的code point
不过先去查查NAK的unicode的code point
unicode code point
unicode code point NAK
“
”
结果:\x{0015}\d+_\d+
也不行,匹配不到:
VSCode regex special char\u0015
\u15
都不行。
VSCode regex unicode
我这里试了:\u0015
\u15
还是不行啊
去试试[\u0015]
[\u15]
都可以的,能找到字符的:
然后去用:^[\u0015]\d+_\d+[\u0015]$
去掉这些有问题的单词
然后再去顺带把多余的空行去掉\n\n+
\n
而此处:\u0015
之所以没有生效。
后来经过自己的细心和观察和猜测:
帖子2017年的,感觉是:
\uxxxx
VSCode应该是2017年就知道了
而此处
可以
-》
而对方是js代码
-〉但是我这里不可以。
-》难道是\uxxxx只有在js代码中的才有效?
-〉之所以这么测试是因为看到了:
提到了:
“one search engine uses theJavaScript regular expressionsyntax (albeit without the ‘u’ unicode flag),
the other is based onripgrepwhich usesRust regular expressionsyntax.”
即:
VSCode中用了两套正则的库:JS的正则表达式的库
ripgrep:内部是基于Rust正则表达式的库也就是我们之前找到的那个文档:regex – Rust
去试了试:
把其中部分内容,拷贝出来,设置代码语法是js,然后再去试试:\u0015,还真的可以:
-》证明了我的猜测是对的。
【后记】
后来重新试了,csv文件中:\u0015
是生效的:
\u0015\d+_\d+\u0015
替换为:
再去:\n\n+
\n
把文件从39M变成3.4M了:
【总结】
VSCode中,如果使用查找(和替换的话),其中用到了正则的话
-〉在搜索中,选中了那个:.* 的图标
-》
按照之前说法,好像有两套正则:JS的正则Regular Expressions – JavaScript | MDN
-》unicode(和hex的16进制)写法是:\xhhMatches the character with the code hh (two hexadecimal digits)
\uhhhhMatches the character with the code hhhh (four hexadecimal digits).
\u{hhhh}(only when u flag is set) Matches the character with the Unicode value hhhh (hexadecimal digits).
基于Rust的ripgrep调用的是:
regex – Rust
-》unicode(和hex的16进制)的写法是:\x7Fhex character code (exactly two digits)
\x{10FFFF}any hex character code corresponding to a Unicode code point
\u007Fhex character code (exactly four digits)
\u{7F}any hex character code corresponding to a Unicode code point
\U0000007Fhex character code (exactly eight digits)
\U{7F}any hex character code corresponding to a Unicode code point
-》不过不用操心,此处
VSCode版本是最新的:1.24.1
对于unicode,都支持:\u0015
的写法,即可找到NAK这个特殊字符了。
另外:新版Rust的unicode支持更完整:
之前0.25的旧版本的Rust:
是:\x7F hex character code (exactly two digits)
\x{10FFFF} any hex character code corresponding to a Unicode code point
而新版本1.0
是:\x7F hex character code (exactly two digits)
\x{10FFFF} any hex character code corresponding to a Unicode code point
\u007F hex character code (exactly four digits)
\u{7F} any hex character code corresponding to a Unicode code point
\U0000007F hex character code (exactly eight digits)
\U{7F} any hex character code corresponding to a Unicode code point
这篇关于java 文本编辑器替换特殊字符_【已解决】替换掉VSCode中显示出的特殊字符:NAK...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!