关于转义字符\,在java中的应

今天在读取json数据过程中发现了一个有意思的地方,json数据中有条是网页的地址,地址中的\符号

例:http://write.blog.csdn.net/

是被换成了/,也就是java中的转义符http://write.blog.csdn.net\postedit ,将地址放入chrome地址栏,回车,发现正常进入网页,于是高兴的直接用这个地址使用java进行访问,想要获取网页的源码,可是运行程序之后才发现错误,猜测错误是网址的编码不对,于是将网址中的中文转换成utf-8编码,之后还是出现了错误。


可是我将debug中取得的网址贴在地址栏中,发现网页正常打开,于是我发现了这2者之间的区别,地址栏自动将\ 换成了/这点在我的程序中没有完成,so 开始我的替换\的过程~


开始打算用split()函数,可是满心欢喜的输入 str.split(“\\”) 发现编译器报错,奇了怪,在字符串中明明好好的没报错,到了函数的参数这就报错了?


之后google了一番,终于解决了问题,参数中使用 \\\\四个斜杠,然后成功。

之后点开split的源代码,看到了答案

里面引用了一个 fastSplit的函数

public static String[] fastSplit(String re, String input, int limit) {
        // Can we do it cheaply?
        int len = re.length();
        if (len == 0) {
            return null;
        }
        char ch = re.charAt(0);
        if (len == 1 && METACHARACTERS.indexOf(ch) == -1) {
            // We're looking for a single non-metacharacter. Easy.
        } else if (len == 2 && ch == '\\') {
            // We're looking for a quoted character.
            // Quoted metacharacters are effectively single non-metacharacters.
            ch = re.charAt(1);
            if (METACHARACTERS.indexOf(ch) == -1) {
                return null;
            }
        } else {
            return null;
        }

当用于分割的符号为 两个 \\时候 函数就会自动取第一个~

终于问题结局,原理也知道了~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值