Java replaceAll()正则表达式不起作用
我试图用“%”替换所有特殊字符,如: 我的正则表达式是:Java replaceAll()正则表达式不起作用,java,regex,special-characters,Java,Regex,Special Characters,我试图用“%”替换所有特殊字符,如: 我的正则表达式是: [^a-zA-Z0-9]+ 在联机工具中,它工作得很好,但在java中工作得很好 s.replaceAll("[^a-zA-Z0-9]+", "%"); 弦保持不变 *我试过了:其他的字符串是不可变的。您忘记将新的字符串重新分配给s变量:) 您不能更改字符串,而是replaceAll返回一个新值。所以你应该这样使用它 String newStr = s.replace(...) replaceAll()与String类中的所有方法一
[^a-zA-Z0-9]+
在联机工具中,它工作得很好,但在java中工作得很好
s.replaceAll("[^a-zA-Z0-9]+", "%");
弦保持不变
*我试过了:其他的字符串是不可变的。您忘记将新的
字符串
重新分配给s
变量:)
您不能更改字符串,而是replaceAll返回一个新值。所以你应该这样使用它
String newStr = s.replace(...)
replaceAll()
与String类中的所有方法一样,不要修改调用方法的String
。这就是为什么我们说String
是不可变的对象。如果你想“修改”它,你需要这样做
s = s.replaceAll("[^a-zA-Z0-9]+", "%");
事实上,您不需要修改
字符串s
。这里发生的是从函数返回新的String
对象。然后根据您的期望将其引用分配给工作代码:)
输出:123.456/789->123%456%789
s=s.replaceAll(“[^a-zA-Z0-9]+”,“%”)代码>字符串是不可变的。@ZouZou:omg thx!4秒,很好的响应时间XD在StackOverflow上解决问题的速度真是太快了当问题这么简单的时候…我不是你的朋友,伙计。你们都在说什么
String newStr = s.replace(...)
s = s.replaceAll("[^a-zA-Z0-9]+", "%");
import java.util.regex.Pattern;
public class Regex {
public static void main(String[] args) {
String s = "123.456/789";
Pattern p = Pattern.compile("[^a-zA-Z0-9]+");
String newStr = s.replaceAll("[^a-zA-Z0-9]+", "%");
System.out.println(s + " -> " + newStr);
}
}