字符串替换反斜杠

时间:2011-04-08 14:18:55

标签: java string replace replaceall

如何用字符串替换反斜杠。

输入源字符串:

sSource = "http://www.example.com\/value";

在上面的字符串中,我想用“/”;

替换“\ /”

替换后的预期输出:

sSource = "http://www.example.com/value";

我从第三方获取源字符串,因此我可以控制字符串的格式。

这就是我尝试过的

试验1:

sSource.replaceAll("\\", "/");

异常 索引1附近出现意外的内部错误 \

试验2:

 sSource.replaceAll("\\/", "/");

没有异常,但没有进行必要的替换。什么都不做。

试验3:

 sVideoURL.replace("\\", "/"); 

没有异常,但没有进行必要的替换。什么都不做。

8 个答案:

答案 0 :(得分:38)

sSource = sSource.replace("\\/", "/");
  • String是不可变的 - 您在其上调用的每个方法都不会更改其状态。它返回一个保存新状态的新实例。因此,您必须将新值分配给变量(它可以是相同的变量)
  • replaceAll(..)使用正则表达式。你不需要那样。

答案 1 :(得分:23)

尝试replaceAll("\\\\", "")replaceAll("\\\\/", "/")

这里的问题是反斜杠是(1)Java-Strings中的转义字符,以及(2)常规表达式中的转义字符 - 每次使用都需要加倍字符,实际上需要4 {{ 1}}在行中。


编辑:当然,正如Bozho所说,你需要对结果做一些事情(将它分配给某个变量)而不是扔掉它。在这种情况下,非正则表达式变体更好。

答案 2 :(得分:7)

尝试

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

编辑:好的,即使在stackoverflow中也有反斜杠转义...你需要在你的replaceAll第一个String参数中有四个反斜杠......

这是因为反斜杠被视为特殊字符的转义字符(例如\ n)。
此外,replaceAll first arg是一个正则表达式,也使用反斜杠作为转义序列 因此对于正则表达式,您需要传递2个反斜杠。要通过java String将这两个反斜杠传递给replaceAll,您还需要转义两个反斜杠 这会让你的表情有四个反斜杠!这就是java中正则表达式的美妙之处;)

答案 3 :(得分:7)

s.replaceAll ("\\\\", "");

你需要在源代码中屏蔽反斜杠,对于正则表达式,你需要再次屏蔽它,所以对于每个反斜杠你需要两个,以4结尾。

但是

s = "http://www.example.com\\/value";

在源代码中也需要两个反斜杠。

答案 4 :(得分:4)

这将用字符串中的正斜杠替换反斜杠:

source = source.replace('\\','/');

答案 5 :(得分:2)

你必须这样做

sSource.replaceAll("\\\\/", "/");

因为反斜杠应该在正则表达式

中的源1中对字符串进行两次转义

答案 6 :(得分:0)

 sSource = StringUtils.replace(sSource, "\\/", "/")

答案 7 :(得分:0)

要替换特定位置的反斜杠:

if ((stringValue.contains("\\"))&&(stringValue.indexOf("\\", location-1)==(location-1))) {
    stringValue=stringValue.substring(0,location-1);
}