从Java中的String中删除非ASCII字符

M.M*_*M.M 18 java

我有一个包含非ASCII字符的URI,如:

http://www.abc.de/qq/qq.ww?MIval=typo3_bsl_int_Smtliste&p_smtbez=Schmalbl ttrigeSomerzischeruchtanb

如何从此URI中删除" "

Cᴏʀ*_*ᴏʀʏ 37

我猜测URL的来源更有问题.也许你正在修复错误的问题?从URI中删除"奇怪"字符可能会给它一个完全不同的含义.

话虽如此,您可以使用简单的字符串替换删除所有非ASCII字符:

string fixed = original.replaceAll("[^\\x20-\\x7e]", "");
Run Code Online (Sandbox Code Playgroud)

或者,如果不包含" "字符,则可以将其扩展为所有非四字节UTF-8字符:

string fixed = original.replaceAll("[^\\u0000-\\uFFFF]", "");
Run Code Online (Sandbox Code Playgroud)


小智 16

yourstring=yourstring.replaceAll("[^\\p{ASCII}]", "");
Run Code Online (Sandbox Code Playgroud)


小智 6

不,不,不,不,这不是ASCII ... [^\x20-\x7E]

这是真正的ascii: [^\x00-\x7F]

否则,它将删除ascii表中的换行符和其他特殊字符!


Yel*_*thi 6

要从字符串中删除非 ASCII 字符,下面的代码对我有用。

\n\n
String str="<UPC>616043287409\xc3\x82\xc3\x82\xc3\x82\xc3\x82</UPC>";\n\nstr = str.replaceAll("[^\\\\p{ASCII}]", "");\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:

\n\n
<UPC>616043287409</UPC>\n
Run Code Online (Sandbox Code Playgroud)\n