所以我得到的是这个简单的方法,除了大写字母和小写字母以及字符串中的数字外,还应删除所有字符。
public static String toSimple(String arg) //redurziert einen String auf Buchstaben und ganze Zahlen
{
String string = arg;
int i = 0;
while ( i < string.length())
{
if (((int)string.charAt(i) >= 48 && (int)string.charAt(i) <= 57)||((int)string.charAt(i) >= 65 && (int)string.charAt(i) <= 90)||((int)string.charAt(i) >= 97 && (int)string.charAt(i) <= 121))
i+=1;
else
{
int a = string.length();
string = string.replaceAll(""+string.charAt(i), "");
if (!(string.length() < a)) //Just in case
{
i+=1;
}
}
问题在于,在某些情况下,string.replaceAll
不会改变任何东西,但会给出一个角色。我在调试器中检查了它,无法找到任何明显的错误或异常。我没有检查整个ASCII表,我知道问题会出现在&#39; $&#39; &#39;&#39;和&#39;。&#39;。
有任何建议如何解决?
答案 0 :(得分:2)
String.replaceAll
将正则表达式作为其第一个参数。
$
,?
和.
是regular expressions中的特殊字符。
使用String.replace
代替 - 这实际上也在内部使用正则表达式,但它正确地转义了字符串。
但是,鉴于您正在使用String.replaceAll
,您可以使用正则表达式完成整个事情:
return arg.replaceAll("[^A-Za-z0-9]", "");