zoukankan      html  css  js  c++  java
  • 转义字符的理解(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
  • 相关阅读:
    递归的狂想(菜鸟的胡思乱想)
    关于fiddler的使用总结
    关于mac下 sublime 安装配置java及运行java个人建议
    关于VMwareFusion占用内存过多的问题提几点自己的解决方案
    (ubuntu)ubuntu的root密码设置
    Refactoring to Patterns 学习笔记2 为什么要重构?
    Refactoring to Patterns 学习笔记1 什么是重构?
    [转载]数据结构树之红黑树
    【转载】数据结构之图(存储结构、遍历)
    STL库之单链表:forward_list
  • 原文地址:https://www.cnblogs.com/buwuliao/p/9852848.html
Copyright © 2011-2022 走看看