转义字符的理解(JAVA、字符串和正则表达式)

一、原理总结:

要理解转义,首先要从正则表达式说起。

  • 在正则表达式中:*\是特殊字符;为了匹配这两个字符本身,正则表达式中需要写为\*\\

  • 在Java中,只能用字符串表示正则表达式,所以需要把\*\\转换成字符串的写法;

  • 在字符串中:\是转义字符,要表示\本身,需要写为\\;所以将这个和上面的一替换,正则表达式中的\*\\写为字符串就变为了\\*\\\\

二、代码测试:

结合代码做说明,直接上代码:

package com.jd.ept.user.center.util;

public class Test {
    public static void main(String[] args){
        String t = "a\\|b||c||d";
        System.out.println(t);

        String t1="|";
        String[] temp = t.split(t1);
        System.out.println("测试一:单穿|分割的结果 :这个其实是错误");
        System.out.println("长度:"+temp.length);
        for (String s:temp){
            System.out.print(s+"-");
        }
        System.out.println("【分割线】");

        t1="\\|";
        temp = t.split(t1);
        System.out.println("测试二:|分割的结果");
        System.out.println("长度:"+temp.length);
        for (String s:temp){
            System.out.print(s+"-");
        }
        System.out.println("【分割线】");

        t1="\\|\\|";
        temp = t.split(t1);
        System.out.println("测试三:||分割的结果");
        System.out.println("长度:"+temp.length);
        for (String s:temp){
            System.out.print(s+"-");
        }
        System.out.println("【分割线】");

        t1="\\\\\\|";
        temp = t.split(t1);
        System.out.println("测试四:最终分割的结果");
        System.out.println("长度:"+temp.length);
        for (String s:temp){
            System.out.print(s+"-");
        }
    }
}

三、代码输出结果:

四、代码解释说明:

原理和开头说的一致,代码中只是把*替换为了|。下面解释测试结果:

原始字符串是:a|b||c||d

4.1 测试一

测试一应该是个错误(暂时不理解,就把他归为错误)

因为在正则表达式中,|是一个特殊字符,这个特殊字符应该匹配不到任何东西,或者说匹配的就是空白。

所以测试一的长度为10。输出就是每个字符都得到了匹配。

4.2 测试二

测试二:以|本身来匹配,而正则表达式中要匹配|本身,字符串中要表示为\|

所以最终长度为6。要注意,原始字符串中,两个|之间会拆出来一个空白,这个需要注意;

4.3 测试三

测试三:以||本身来匹配,即两个|,正则表达式中要匹配两个|本身,字符串中要表示为\|\|

所以最终长度为3,没问题。

4.4 测试四

测试四:以|本身来匹配,正则表达式中要匹|,字符串中要表示为\\\\\|

所以最终长度为2,也没问题。

五、参考:

  1. 语言的转义字符及正则表达式的转义字符的表示 - March On - 博客园 https://www.cnblogs.com/z-sm/p/6944850.html
    注:这个对我的影响最大,仔细看懂就好了;
  2. java 转义符 | - cucarcha 的专栏 - CSDN 博客 https://blog.csdn.net/stewen_001/article/details/22871737

转载于:https://www.cnblogs.com/buwuliao/p/9852848.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值