Java String.replaceAll不适用于任何类型的字符
所以我得到的是这个简单的方法,它应该删除字符串中除大小写字母和数字以外的所有字符Java String.replaceAll不适用于任何类型的字符,java,string,replaceall,Java,String,Replaceall,所以我得到的是这个简单的方法,它应该删除字符串中除大小写字母和数字以外的所有字符 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.
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;
}
}
public static String to simple(String arg)//redurziert einen String auf Buchstaben and ganze Zahlen
{
字符串=arg;
int i=0;
而(i=48&&(int)string.charAt(i)=65&(int)string.charAt(i)=97&(int)string.charAt(i)将正则表达式作为其第一个参数
$
、?
和
是中的特殊字符
而是使用-这实际上在内部也使用正则表达式,但它正确地转义字符串
但是,如果您使用的是String.replaceAll
,则只需使用正则表达式即可完成整个操作:
return arg.replaceAll("[^A-Za-z0-9]", "");
请注意,可以使用字符文字来代替“幻数”-因此(int)string.charAt(i)>=48
可以写成string.charAt(i)>=0'
,这使您的意思更加明显。(在任何情况下都不需要转换为int
)。这是一种从字符串中删除字符的非常可怕的方法。它不起作用。请尝试使用字符串“,,+a”-它不会删除“+”。通常,您会在StringBuilder中构建一个新字符串,但即使您是这样做的,您也会使用String.substring
两次来获取字符前后的字符串。这要简单得多:d thanksOrarg.replaceAll(\\P{Alnum}+“,”)
@Wiktor确实如此。我建议使用显式范围,因为它与OP的代码匹配。