Java 用2个范围(或)之间的ASCII值替换字符串
我想替换一个包含不需要的ASCII字符的字符串,但这两个范围除外(在Java 用2个范围(或)之间的ASCII值替换字符串,java,regex,Java,Regex,我想替换一个包含不需要的ASCII字符的字符串,但这两个范围除外(在hex中): x20-x7e和x80-x9a 如何编写正确的正则表达式,以便替换所有不在20-7e和80-9a之间的字符 我试过这个: String fixed = value_.replaceAll("[^(\\x20-\\x7e|\\x80-\\x9a)]", ""); 但它不起作用。 更新: 我得到一个字符串,它只有介于x20-x7e之间的字符,所有其他字符,包括 已更换x80-x9a 如何在这两个范围之间使用或?为什么
hex
中):
x20-x7e
和x80-x9a
如何编写正确的正则表达式,以便替换所有不在20-7e
和80-9a
之间的字符
我试过这个:
String fixed = value_.replaceAll("[^(\\x20-\\x7e|\\x80-\\x9a)]", "");
但它不起作用。
更新:
我得到一个字符串,它只有介于x20-x7e之间的字符,所有其他字符,包括
已更换x80-x9a
如何在这两个范围之间使用或?为什么不:
String fixed = value_.replaceAll("[^\\x20-\\x7e\\x80-\\x9a]", "");
修复正则表达式语法,然后使用Unicode
\unnn
String fixed = value_.replaceAll("[^\u0020-\u007e\u0080-\u009a]", "");
或八进制\nnn
:
String fixed = value_.replaceAll("[^\40-\176\200-\232]", "");
仅供参考,虽然Unicode需要全部四位数字,但八进制只需要所需的数字。你说“不工作”是什么意思?你得到了什么输出?@Rohit Jain:我已经用我得到的结果进行了更新。因为问题是字符>=0x80,这可能是由于ASCII与Unicode的错误吗?我测试了代码,它对我有效。请发布您的输入字符串。