如何替换Java中不可打印的Unicode字符?
|
以下将替换ASCII控制字符(
[\\x00-\\x1F\\x7F]
的缩写):
my_string.replaceAll(\"\\\\p{Cntrl}\", \"?\");
以下内容将替换所有ASCII不可打印字符([\\p{Graph}\\x20]
的简写),包括带重音符号的字符:
my_string.replaceAll(\"[^\\\\p{Print}]\", \"?\");
但是,两者均不适用于Unicode字符串。有谁能从Unicode字符串中删除不可打印字符的好方法?
没有找到相关结果
已邀请:
8 个回复
踩什不
查看有关Unicode正则表达式的更多信息。
/
支持它们。
骨酚柯
但是,如果
可能包含非BMP码点,那么它会更加复杂。 “ 9”包含代理代码点“ 10”。上面的替换方法通过有时仅替换代理对的一半来破坏非BMP代码点。这可能是Java错误,而不是预期的行为。 使用其他组成类别是一种选择:
但是,不删除不属于一对的单独代理字符(每个代理字符都有一个分配的代码点)。我知道正确处理ѭ9only的唯一方法是非正则表达式:
旦彤
和
检查它们。
凸晴
捻盒愧杯
希望这是有用的。
雄鞋谋塘
经过Scala REPL测试。
bab
掀辟髓观粟