为什么这个Java String.replaceAll()代码不起作用?

smu*_*kes 2 java string api replaceall

我之前在Java中使用过string.replaceAll()并没有遇到任何麻烦,但我对此感到难过.我认为它只是工作,因为没有"/"或"$"字符.这是我想要做的:

String testString = "__constant float* windowArray";
String result = testString.replaceAll("__constant float* windowArray", "__global float* windowArray");
Run Code Online (Sandbox Code Playgroud)

变量结果看起来与testString相同.我不明白为什么没有变化,请帮忙.

Gre*_*egg 7

传递给replaceAll的第一个参数仍被视为正则表达式.该*字符是一个特殊字符的含义,大致的字符串(这里:在前面的东西t),可以有0或更多次.你想要做的是逃避*正则表达式.你的第一个论点看起来应该更像:

"__constant float\\* windowArray"
Run Code Online (Sandbox Code Playgroud)

第二个参数是,至少为了你的目的,仍然只是一个普通的字符串,所以你不需要逃避*那里.

String result = testString.replaceAll("__constant float\\* windowArray", "__global float* windowArray");
Run Code Online (Sandbox Code Playgroud)