替换'by'

ekk*_*kka 3 java replace

我试图取代一个单引号'这个字符\',最终的目标是这个转变chay'ekka斋\'EKKA.我试过这段代码:

String cityName = new String("chay'ekka");
System.out.println("before : " + cityName);
cityName = cityName.replaceAll("'", "\\'");
System.out.println("after : " + cityName);
Run Code Online (Sandbox Code Playgroud)

但结果仍然是chay'ekka.

在Java中是否有任何其他方法或函数来实现此目标?

Jon*_*eet 14

你正在使用replaceAll,它适用于正则表达式.虽然你可以通过加倍反斜杠解决这个问题,但是没有任何迹象表明你想要正则表达式.只是调用它会更简单String.replace,因为它不使用正则表达式:

String cityName = new String("chay'ekka");
System.out.println("before : " + cityName);
cityName = cityName.replace("'", "\\'");
System.out.println("after : " + cityName);
Run Code Online (Sandbox Code Playgroud)

请注意,replace仍然用第二个参数替换第一个参数的所有出现 - 在replace和之间的命名replaceAll是差的:(它会更好,因为replacevs replaceRegex或类似的东西.


Tim*_*sen 6

您需要四个反斜杠来表示单个文字反斜杠:

String cityName = new String("chay'ekka");
System.out.println("before : "+cityName);
cityName = cityName.replaceAll("'", "\\\\'");
System.out.println("after : "+cityName);
Run Code Online (Sandbox Code Playgroud)

需要四个反斜杠的原因是\\代表单个字面反斜杠.但是,在正则表达式上下文中,反斜杠本身需要被转义,因此我们需要其中的四个.