我试图取代一个单引号'这个字符\',最终的目标是这个转变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或类似的东西.
您需要四个反斜杠来表示单个文字反斜杠:
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)
需要四个反斜杠的原因是\\代表单个字面反斜杠.但是,在正则表达式上下文中,反斜杠本身需要被转义,因此我们需要其中的四个.