Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中从字符串中删除非ASCII字符_Java - Fatal编程技术网

在Java中从字符串中删除非ASCII字符

在Java中从字符串中删除非ASCII字符,java,Java,我有一个包含非ASCII字符的URI,如: �ttrigeSomerzischeruchtanb 我如何删除“�" 从这个URI来看,我猜URL的来源是错误的。也许你修复了错误的问题?从URI中删除“奇怪”字符可能会赋予它完全不同的含义 因此,您可以通过简单的字符串替换来删除所有非ASCII字符: String fixed = original.replaceAll("[^\\x20-\\x7e]", ""); 或者您可以将其扩展到所有非四字节UTF-8

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

�ttrigeSomerzischeruchtanb


我如何删除“�" 从这个URI来看,我猜URL的来源是错误的。也许你修复了错误的问题?从URI中删除“奇怪”字符可能会赋予它完全不同的含义

因此,您可以通过简单的字符串替换来删除所有非ASCII字符:

String fixed = original.replaceAll("[^\\x20-\\x7e]", "");
或者您可以将其扩展到所有非四字节UTF-8字符,如果这不包括“�“性质:

String fixed = original.replaceAll("[^\\u0000-\\uFFFF]", "");

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

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


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

要从字符串中删除非ascii字符,下面的代码适合我

yourstring=yourstring.replaceAll("[^\\p{ASCII}]", "");
String str="<UPC>616043287409ÂÂÂÂ</UPC>";

str = str.replaceAll("[^\\p{ASCII}]", "");
String str=“616043287409”;
str=str.replaceAll(“[^\\p{ASCII}]”,“”);
输出:

<UPC>616043287409</UPC>
616043287409
使用番石榴


与中允许的字符集相比,可能的字符集较大。删除所有非英语文本将排除多种语言。这是您想要的吗?还是要对文本进行百分比编码?还是要将文本转换为英语?请尽量避免将代码作为答案转储,并尝试解释其作用和原因。对于没有相关编码经验的人来说,您的代码可能不明显。是
\u0000-\uFFFF
4字节还是2字节。@JSixface:Java中的Unicode字符是16位或2字节。但是,在这个正则表达式字符串中指定的范围上下文中,这个问题对我来说没有意义。[^\x00-\x7F]是ascii字符的正确范围,如果您将x20作为起始范围,您也将删除新行字符。谢谢!我想知道我的新行到哪里去了!!
String onlyAscii = CharMatcher.ascii().retainFrom(original)