假设我有以下代码:
String description = "★★★★★ ♫ ♬ This description ✔✔ ▬ █ ✖ is a mess. ♫ ♬ ★★★★★";
我想删除非拉丁字符:✔
、̶
、█
、✖
, ♫
, ♬
和 ★
。
让它变成这样:这个描述一团糟。
我知道可能有很多类似翅膀的字符,所以我认为最好列出我想保留的内容,而不是指定我想删除的内容:Basic Latin和 Latin-1 supplements字符。
我发现我可以使用下面的代码删除除基本拉丁字符以外的所有内容
String clean_description = description.replaceAll("[^\\x00-\\x7F]", "").trim();
但是有没有办法同时保留 Latin-1 补充字符?
最佳答案
从您提供的字符范围来看,“Basic Latin”和“Latin-1 Supplements”似乎是相邻的(0x00
-0x7F
和 0x80
-0xFF
).
因此您可以使用您提供的相同正则表达式,只是扩展以包含“Latin-1 Supplement”字符。看起来像这样:
String clean_description = description.replaceAll("[^\\x00-\\xFF]", "").trim();
正如 Quinn 的评论中指出的那样, 这并没有消除删除部分之间的空格,因此结果有多余的空格(这可能是也可能不是你想要的)。如果您想要删除这些空格,Quinn 的正则表达式([^(\\x00-\\xFF)]+(?:$|\\s*)
,以防注释被删除)可能会起作用给你。
关于Java从字符串中删除非拉丁基本字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36038856/