2013-05-09 48 views
1

我想用 java替换\.如何用替换。在java字符串

src\main\java\com\myapp\AppJobExecutionListener

在这里,我想喜欢src.main.java.com.myapp.AppJobExecutionListener

我试图str.replaceAll("\\","[.]")str.replaceAll("\\","[.]"),但它不工作。

我仍然得到原始字符串src\main\java\com\myapp\AppJobExecutionListener

+7

你把结果重新分配给'str'吗?即'str = str.replaceAll(...)' – MadProgrammer 2013-05-09 06:04:46

+0

''src \ main \ java \ com \ vxl \ appanalytix \ AppJobExecutionListener“'作为字符串在java中无效。 – 2013-05-09 06:10:58

回答

3

字符串是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" 
+0

+1为例。 – Maroun 2013-05-09 06:09:26

+0

我用两步就搞定了。 a)String str1 = str.replaceAll(“\\”,“\\\\”)。 b)a)String str1 = str.replaceAll(“\\”,“[。]”)。在进行步骤b)之前,步骤a)是重要的。 – user2215139 2013-05-14 07:04:24

+0

@ user2215139很好,你理解它,用更少的代码解决它,保持它! – Abubakkar 2013-05-14 09:56:43

1

分配回字符串str变量。 String#replaceAll不会更改字符串本身,它会返回一个新的String。

str = str.replaceAll("\\\\",".") 
+0

雅我试过这个,但为什么三个斜杠\\\?我得到的编译问题我尝试了str = str.replaceAll(“\\”,“。”),但仍然是异常像java.util.regex.PatternSyntaxException:索引1附近的意外内部错误 \ ^ – user2215139 2013-05-09 06:15:13

1

你可以试试这个:

String original = "Some text with \\ and rest of the text"; 
String replaced = original.replace("\\","."); 

System.out.println(replaced); 
+1

\是转义字符。你确定这会完美运行吗? – Maximin 2013-05-09 06:07:54

+0

谢谢你的抬头,我修好了。 – 2013-05-09 06:22:00

-1

只要改变行

str = str.replaceAll("\\","."); 

编辑:我没有尝试它,因为这里的问题不在于是否其正确的正则表达式,但这里的问题是他没有将str分配给新的str值。反正现在纠正正则表达式。

+0

你试过了吗? 'replaceAll'不会将第二个参数作为正则表达式,它只是一个字符串。所以它应该是。不是[ – 2013-05-09 06:14:57

+0

]不,我没有尝试它,因为这里的问题不是它是否是正确的正则表达式,但这里的问题是他没有将str分配给新的str值。 – 2013-05-09 06:16:59

+0

好.......好的:) – 2013-05-09 06:21:33

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 
1

目前您正在使用replaceAll,它采用正则表达式模式。这使得生活比需要的复杂得多。除非试图使用来使用正则表达式,否则只需使用String.replace

事实上,正如你只能用另一个更换一个字符,你可以使用字符文字:

String replaced = original.replace('\\', '.'); 

\加倍,因为它是一个Java字符文字转义字符 - 但作为以上不是使用正则表达式,期间没有特别的意义。

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

0

的replaceAll需要一个正则表达式作为第一个参数。

要替换\你需要双重转义。你需要额外的\才能逃脱第一个。因为它是一个正则表达式输入,你需要再次逃避这些输入。至于其他的答案说字符串是不可改变的,所以你需要将结果

String newStr = str.replaceAll("\\\\", "."); 

第二个参数是不是正则表达式,所以你可以把分配。在那里,但请注意,你需要四个斜杠来替换一个反斜杠,如果使用的replaceAll

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

1

字符串取代= original.replace('\','。');

试试这个效果不错