我想在\
java中用.
替换String
。
示例src\main\java\com\myapp\AppJobExecutionListener
在这里,我希望得到src.main.java.com.myapp.AppJobExecutionListener
我尝试了str.replaceAll("\\","[.]")
和str.replaceAll("\\","[.]")
,但它无效。
我仍然会收到原始字符串src\main\java\com\myapp\AppJobExecutionListener
答案 0 :(得分:3)
String在Java中是不可变的,因此除非重新分配,否则在String对象上调用的任何方法都不会反映在它上面。
String s = "ABC";
s.replaceAll("B","D");
System.out.println(s); //still prints "ABC"
s = s.replaceAll("B","D");
System.out.println(s); //prints "ADC"
答案 1 :(得分:1)
将其分配回字符串str变量,。String#replaceAll不会更改字符串本身,它会返回一个新字符串。
str = str.replaceAll("\\\\",".")
答案 2 :(得分:1)
你可以试试这个:
String original = "Some text with \\ and rest of the text";
String replaced = original.replace("\\",".");
System.out.println(replaced);
答案 3 :(得分:1)
'\'字符在'\\'等字符串中加倍。因此,应使用'\\'字符将其替换为'。'角色以及使用 replace
代替 replaceAll
就足够了。这是一个样本;
public static void main(String[] args) {
String myString = "src\\main\\java\\com\\vxl\\appanalytix\\AppJobExecutionListener";
System.out.println("Before Replaced: " + myString);
myString = myString.replace("\\", ".");
System.out.println("After Replaced: " + myString);
}
这会给你:
Before Replaced: src\main\java\com\vxl\appanalytix\AppJobExecutionListener
After Replaced: src.main.java.com.vxl.appanalytix.AppJobExecutionListener
答案 4 :(得分:1)
使用String replaceAll(String regex, String replacement)
:
str = str.replaceAll("\\\\", ".");
使用String replace(char oldChar, char newChar)
:
str = str.replace('\\', '.');
String replace(CharSequence target, CharSequence replacement)
str = str.replace("\\", ".");
答案 5 :(得分:1)
目前您正在使用replaceAll
,它采用正则表达式模式。这使得生活变得比它需要的复杂得多。除非您尝试使用正则表达式,否则只需使用String.replace
。
事实上,由于您只是将一个字符替换为另一个,您可以使用字符文字:
String replaced = original.replace('\\', '.');
\
加倍,因为它是Java字符文字中的转义字符 - 但由于上面的不使用正则表达式,因此句点没有特殊含义。
答案 6 :(得分:1)
已更换字符串= original.replace(' \','。');
试试这个效果很好
答案 7 :(得分:0)
使用替换代替 replaceall
String my_str="src\\main\\java\\com\\vxl\\appanalytix\\AppJobExecutionListener";
String my_new_str = my_str.replace("\\", ".");
System.out.println(my_new_str);
<强> DEMO AT IDEONE.COM 强>
答案 8 :(得分:0)
replaceAll将正则表达式作为第一个参数。
要替换\你需要双重逃脱。你需要一个额外的\来逃避第一个。因为它是一个正则表达式输入,你需要再次逃避它们。正如其他答案所说,字符串是不可变的,因此您需要分配结果
String newStr = str.replaceAll("\\\\", ".");
第二个参数不是正则表达式,所以你可以放。但请注意,如果使用replaceAll
,则需要四个斜杠来替换一个反斜杠答案 9 :(得分:0)
我试过这个:
String s="src\\main\\java\\com\\vxl\\appanalytix\\AppJobExecutionListener";
s = s.replace("\\", ".");
System.out.println("s: "+ s);
输出:src.main.java.com.vxl.appanalytix.AppJobExecutionListener
答案 10 :(得分:-1)
只需将行更改为
即可str = str.replaceAll("\\",".");
编辑:我没有尝试过,因为这里的问题不在于它是否是正确的正则表达式,而是这里的问题是他没有将str分配给新的str值。无论如何,现在正在修正正则表达式。