我想删除除字符串中的字符a-z,A-Z和0-9之外的所有内容,因此我需要为Java的string.replaceAll(regex, "");
旧字符串看起来像这样:
MAX EUK_1334-PP/B+
新字符串应如下所示:
MAXEUK1334PPB
答案 0 :(得分:67)
可能有一个更简洁的正则表达式,但这肯定会有效:
string.replaceAll("[^a-zA-Z0-9]", "");
答案 1 :(得分:17)
string.replaceAll("[^a-zA-Z0-9]+", "");
答案 2 :(得分:2)
String test = "MAX EUK_1334-PP/B+";
test = test.replaceAll("[\\W_]", "");
System.out.println(test + "\n");
印刷结果:
MAXEUK1334PPB
答案 3 :(得分:1)
有些人忘记了“_”字符:
String regex = "[_\\W]";
public class RegexFun2 {
public static void main(String[] args) {
String test = "MAX EUK_1334-PP/B+";
String regex = "[_\\W]";
String result = test.replaceAll(regex, "");
System.out.println(result);
}
}
但我仍然认为OP是在欺骗自己,并没有证明他先尝试并在原来的问题上发表了他的尝试。我的2美分。
答案 4 :(得分:0)
您可以使用字符的ASCII值:
while(!end of string){
if(valueOfChar is between 48-57 or 65-90 or 97-122)
write it to your string
}
这可能会有所帮助,但我不知道您是否应该使用replaceAll
编写代码。
replaceAll
和此代码都具有相同的效果(O(n)
)。