字符串替换反斜杠

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

输入源字符串:

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

在上面的String中我想用“/”替换“\ /”;

更换后的预期输出:

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

我从第三方获取Source String,因此我可以控制String的格式。

这就是我的尝试

试验1:

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

exception索引1附近出现意外内部错误

试验2:

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

没有例外,但没有做必要的替换。 什么都不做。

试验3:

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

没有例外,但没有做必要的替换。 什么都不做。

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

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

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


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

尝试

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

编辑:确定即使在stackoverflow中也有反斜杠转义…你需要在replaceAll第一个String参数中有四个反斜杠…

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

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

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

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

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

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

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

你必须做

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

因为反向间隔应该在正则表达式中的源1中对字符串进行两次转义

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

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

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