ken*_*ohn 27 java string replace replaceall
如何用字符串替换反斜杠.
输入源字符串:
sSource = "http://www.example.com\/value";
Run Code Online (Sandbox Code Playgroud)
在上面的String中我想用"/"替换"\ /";
更换后的预期输出:
sSource = "http://www.example.com/value";
Run Code Online (Sandbox Code Playgroud)
我从第三方获取Source String,因此我可以控制String的格式.
这就是我尝试过的
试验1:
sSource.replaceAll("\\", "/");
Run Code Online (Sandbox Code Playgroud)
异常索引1附近出现意外内部错误
试验2:
sSource.replaceAll("\\/", "/");
Run Code Online (Sandbox Code Playgroud)
没有例外,但没有做必要的替换.什么都不做.
试验3:
sVideoURL.replace("\\", "/");
Run Code Online (Sandbox Code Playgroud)
没有例外,但没有做必要的替换.什么都不做.
Boz*_*zho 41
sSource = sSource.replace("\\/", "/");
Run Code Online (Sandbox Code Playgroud)
String
是不可变的 - 您在其上调用的每个方法都不会更改其状态.它返回一个保存新状态的新实例.所以你必须将新值赋给变量(它可以是同一个变量)replaceAll(..)
使用正则表达式.你不需要那个.Paŭ*_*ann 25
试试replaceAll("\\\\", "")
或replaceAll("\\\\/", "/")
.
这里的问题是反斜杠是(1)Java-Strings中的转义特性,以及(2)常规表达式中的转义字符 - 每个使用都需要加倍字符,实际上需要4 \
行.
编辑:当然,正如Bozho所说,你需要对结果做一些事情(将它分配给某个变量)而不是扔掉它.在这种情况下,非正则表达式变体更好.
尝试
sSource = sSource.replaceAll("\\\\", "");
Run Code Online (Sandbox Code Playgroud)
编辑:好的,即使在stackoverflow中也有反斜杠转义...你需要在replaceAll第一个String参数中有四个反斜杠...
这是因为反斜杠被视为特殊字符的转义字符(例如\n).
此外,replaceAll first arg是一个正则表达式,也使用反斜杠作为转义序列.
因此对于正则表达式,您需要传递2个反斜杠.要通过java String将这两个反斜杠传递给replaceAll,您还需要转义两个反斜杠.
这会让你的表情有四个反斜杠!这就是java中正则表达式的美妙;)
s.replaceAll ("\\\\", "");
Run Code Online (Sandbox Code Playgroud)
你需要在源代码中屏蔽反斜杠,对于正则表达式,你需要再次屏蔽它,所以对于每个反斜杠你需要两个,以4结尾.
但
s = "http://www.example.com\\/value";
Run Code Online (Sandbox Code Playgroud)
在源代码中也需要两个反斜杠.
归档时间: |
|
查看次数: |
87864 次 |
最近记录: |