Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java replaceAll()正则表达式不起作用_Java_Regex_Special Characters - Fatal编程技术网

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);
    }
}