38

如何对反斜杠进行字符串替换。

输入源字符串:

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

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

替换后的预期输出:

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

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

这是我尝试过的

试验一:

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

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

试验二:

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

No Exception,但不执行所需的替换。什么都不做。

试验 3:

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

No Exception,但不执行所需的替换。什么都不做。

4

9 回答 9

52
sSource = sSource.replace("\\/", "/");
  • String是不可变的——你在它上面调用的每个方法都不会改变它的状态。它返回一个持有新状态的新实例。所以你必须将新值分配给一个变量(它可以是同一个变量)
  • replaceAll(..)使用正则表达式。你不需要那个。
于 2011-04-08T14:20:47.533 回答
31

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

这里的问题是反斜杠是 (1) Java 字符串文字中的转义字符,以及 (2) 正则表达式中的转义字符 - 每个使用都需要将字符加倍,实际上需要 4 个\行。

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

于 2011-04-08T14:22:14.573 回答
10

尝试

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

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

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

于 2011-04-08T14:20:48.113 回答
7
s.replaceAll ("\\\\", "");

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

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

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

于 2011-04-08T14:31:58.993 回答
4

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

source = source.replace('\\','/');
于 2014-08-06T20:42:12.087 回答
2

你所要做的

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

因为对于正则表达式中源一中的字符串,反斜杠应该转义两次

于 2011-04-08T14:24:04.340 回答
1

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

if ((stringValue.contains("\\"))&&(stringValue.indexOf("\\", location-1)==(location-1))) {
    stringValue=stringValue.substring(0,location-1);
}
于 2017-03-01T10:11:33.540 回答
0
 sSource = StringUtils.replace(sSource, "\\/", "/")
于 2014-10-15T11:08:50.347 回答
0

这个对我有用

sSource = sSource.replace("\\", "");
于 2021-10-11T20:35:20.197 回答