Java 字符串替换反斜杠

Java 字符串替换反斜杠,java,string,replace,replaceall,Java,String,Replace,Replaceall,如何用反斜杠替换字符串 输入源字符串: sSource = "http://www.example.com\/value"; sSource = "http://www.example.com/value"; 在上面的字符串中,我想用“/”替换“\/” 更换后的预期输出: sSource = "http://www.example.com\/value"; sSource = "http://www.example.com/value"; 我从第三方获得源字符串,因此我可以控制字符串的格

如何用反斜杠替换字符串

输入源字符串:

sSource = "http://www.example.com\/value";
sSource = "http://www.example.com/value";
在上面的字符串中,我想用“/”替换“\/”

更换后的预期输出:

sSource = "http://www.example.com\/value";
sSource = "http://www.example.com/value";
我从第三方获得源字符串,因此我可以控制字符串的格式

这就是我尝试过的

试验1:

sSource.replaceAll("\\", "/");
例外情况 索引1附近出现意外的内部错误 \

试验2:

 sSource.replaceAll("\\/", "/");
无例外,但不执行所需的更换。什么都不做

sSource = sSource.replace("\\/", "/");
试验3:

 sVideoURL.replace("\\", "/"); 
无例外,但不执行所需的更换。什么都不做

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

   sSource = sSource.replaceAll("\\\\", "");
编辑:好,即使在stackoverflow中也有反斜杠转义。。。在replaceAll第一个字符串参数中需要有四个反斜杠

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

尝试
replaceAll(“\\\\”,“”)
replaceAll(“\\\\/”,“/”)

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

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

您必须这样做

sSource.replaceAll("\\\\/", "/");
因为在正则表达式中,对于源1中的字符串,应该对backshlash进行两次转义

s.replaceAll ("\\\\", "");
您需要在源代码中屏蔽一个反斜杠,对于regex,您需要再次屏蔽它,因此对于每个反斜杠,您需要两个,以4结尾

但是


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

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

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

要在特定位置替换反斜杠,请执行以下操作:

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

不行。使用replace()而不是replaceAll()或者使用四个反斜杠对于stackoverflow语法,在前面使用``或四个空格来禁用解析(并将其格式化为代码)。是的,我没有看到我的反斜杠没有被转义:)我编辑了我的应答BTW,如果您将其声明为字符串文字,则您的源代码不能是
\/
。但我假设它来自其他地方。在您的示例中,您将\替换为nothing,而不是/;已经有一个正斜杠。可能是的重复。您能解释一下OP的代码出了什么问题以及为什么使用这个更好吗?简单明了:D,没有regexp;)