1

我想\用java替换.String

例子src\main\java\com\myapp\AppJobExecutionListener

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

我试过了str.replaceAll("\\","[.]")str.replaceAll("\\","[.]")但它不起作用。

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

4

11 回答 11

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"
于 2013-05-09T06:08:25.467 回答
1

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

str = str.replaceAll("\\\\",".")
于 2013-05-09T06:06:09.973 回答
1

你可以试试这个:

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

System.out.println(replaced);
于 2013-05-09T06:06:46.680 回答
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
于 2013-05-09T06:08:12.013 回答
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("\\", ".");
于 2013-05-09T06:09:41.497 回答
1

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

事实上,由于您只是用另一个字符替换一个字符,您可以只使用字符文字:

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

加倍,\因为它是 Java 字符文字中的转义字符 - 但由于上面使用正则表达式,句点没有特殊含义。

于 2013-05-09T06:10:18.973 回答
1

字符串替换 = original.replace('\', '.');

试试这个效果很好

于 2015-06-10T06:41:27.373 回答
0

使用替换而不是全部替换

String my_str="src\\main\\java\\com\\vxl\\appanalytix\\AppJobExecutionListener";
String my_new_str = my_str.replace("\\", ".");
System.out.println(my_new_str);

IDEONE.COM 上的演示

于 2013-05-09T06:12:01.227 回答
0

replaceAll 将正则表达式作为第一个参数。

要替换 \ 您需要双重转义。你需要一个额外的 \ 来逃避第一个。由于它是一个正则表达式输入,您需要再次转义这些输入。正如其他答案所说,字符串是不可变的,因此您需要分配结果

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

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

于 2013-05-09T06:17:27.877 回答
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

于 2013-05-09T06:18:46.843 回答
-1

只需将行更改为

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

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

于 2013-05-09T06:08:09.980 回答