一个反斜杠转化成两个反斜杠 将“/” 转化成“//”

今天做一个从服务器批量下载的功能遇到一个小问题。

将一个反斜杠转化成两个反斜杠

 

      

很有意思的东东。我刚开始直接用replace("/","//"),发现不行。

然后用replace("//",""),发现还是报错

Exception in thread "main" java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
/
 ^
    at java.util.regex.Pattern.error(Pattern.java:1650)
    at java.util.regex.Pattern.compile(Pattern.java:1403)
    at java.util.regex.Pattern.<init>(Pattern.java:1124)
    at java.util.regex.Pattern.compile(Pattern.java:817)
    at java.lang.String.replaceAll(String.java:2000)
    at com.FileDemo.main(FileDemo.java:34)

大意是说正则表达式解析错误。

 

 

原理不知道,我百度了下发现有如下解释:

 

String.replaceAll ()是用regular expression 来作为参数的。但是java本身的字符串对于转义符/也有类似的处理。首先,java会把“”解释成一个字符串(其中包含两个char)——“//”这个就是你在JDK的文档里看到的。
接下来,由于replaceAll 是以正则表达式作为参数,所以“//”被解释成一个regex。对于一个regex来说这就代表着一个字符,就是“/”。对后面的那个8个/来说,最终会被解释成“//”。

 

以上这段话比较难理解。要多读几遍才明白。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值