【发布时间】:2010-04-09 14:20:57
【问题描述】:
我想知道如何在 Java 中替换字符串。
例如
String a = "adf�sdf";
如何替换和避免特殊字符?
【问题讨论】:
-
欢迎来到 SO,查希尔!你从哪里得到你的字符串?随机用户?网络服务?您是想用该字符串替换某些内容,还是使用该字符串替换其他内容?
我想知道如何在 Java 中替换字符串。
例如
String a = "adf�sdf";
如何替换和避免特殊字符?
【问题讨论】:
您可以使用String#replaceAll() 将[^\\x20-\\x7e] 替换为空字符串,从而消除printable ASCII range 之外的所有字符:
a = a.replaceAll("[^\\x20-\\x7e]", "");
但这实际上并没有解决您的实际问题。这更像是一种解决方法。有了给定的信息,很难确定这个问题的根本原因,但阅读这些文章中的任何一篇都必须有很大帮助:
【讨论】:
%20 替换结尾附近的空格。
如果不了解更多上下文,很难回答这个问题。
一般来说,您可能会遇到编码问题。有关字符编码的概述,请参阅 The Absolute Minimum Every Software Developer (...) Must Know About Unicode and Character Sets。
【讨论】:
假设你想删除所有特殊字符,可以使用字符类\p{Cntrl}那么你只需要使用如下代码:
stringWithSpecialCharcters.replaceAll("\\p{Cntrl}", replacement);
【讨论】:
您可以使用 unicode 转义序列(例如 \u201c [开头的花括号])来“避免”无法直接用于源文件编码的字符(默认为您平台的默认编码) , 但您可以使用-encoding 参数将其更改为javac)。
【讨论】:
native2ascii, crikey, 这是过去的一次爆炸) 谢谢,不过,无论如何,信息预编辑在 2010 年显然是错误的!