繁体   English   中英

使用Java Regex解析特殊字符

[英]Parsing special character using Java Regex

我有一个要求,我需要从不在数组列表中的字符串中删除那些特殊字符。 找到后,当前代码会删除所有特殊字符,

String Modified_remark = final_remark.replaceAll("[^\\x00-\\x7F]", "");

该代码从字符串中删除了所有特殊字符,但是我想保留某些项,例如Angstrom Symbol(Å)和Micron Symbol(μ)

例如,如果我将允许的特殊字符放在Array中,我希望代码跳过替换,如果不匹配,则替换为“”(空引号)。

String[] allowedChar = {Å, μ};

根据用户要求添加更多。 任何人都可以帮忙这个逻辑。

只需将所有allowedChar添加到您的正则表达式的异常列表中:

final_remark.replaceAll("[^\\x00-\\x7F" + String.join("", allowedChar) + "]", "");

演示: https//ideone.com/iQWvHI

更新资料

作为Wiktor的Stribiżew正确地指出的那样,这个简单的代码打破,如果allowedChar包含一些正则表达式特殊字符。 由于要求暗示allowedChar仅包含非ACSII字符,因此我们可以在allowedChar上添加如下条件:

String[] allowedChar = {"Å", "μ", "]"};
String allowedChars = "";
for (String ch : allowedChar)
    if (ch.matches("^[^\\x00-\\x7F]$"))
        allowedChars += ch;
String Modified_remark = final_remark.replaceAll("[^\\x00-\\x7F" + allowedChars + "]", "");

演示: https : //ideone.com/94513e

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM