zoukankan      html  css  js  c++  java
  • java转义字符探究恢复

    今天工作的时候,遇到了个奇怪的问题,是关于字符串转义与替换的。最后终于解决了,特总结
    下。

    小demo,

    package com.westward;
    
    public class Demo {
    
        
        /**
         * 1.将字符串  "a    b"替换为"a 1b".ab之间不是空格,是制表符。
         * 2.将字符串  "a	b"替换为"a 2b".
         * */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            String string1= "a	b";
            System.out.println("string1 ="+ string1);
            String string2= "a\tb";
            System.out.println("string2 ="+ string2);
            System.out.println("---------转换开始-----------");
            string1= string1.replaceAll("\t", " 1");
            string2= string2.replaceAll("\\t", " 2");
            System.out.println("format:string1 ="+ string1);
            System.out.println("format:string2 ="+ string2);
            
        }
    
    }

    output:
    string1 =a b
    string2 =a b
    ---------转换开始-----------
    format:string1 =a 1b
    format:string2 =a 2b

    总结:

    java语言,字符串中的反斜杠是转义字符的意思,而不是反斜杠本身。所以我们如果想打印出反斜杠本身,必须\。前面一个是转义字符,将后面的转义字符转义为反斜杠本身,有点绕。

    特别需要注意的是,我们在控制台打印出比如字符串:xyz xxx,那么我们必须敏感的认识到,代码中的字符串肯定不是打印出来的原样,而应该是 xyz\txxx。同样的,如果控制台打印出的字符串是:xyz  xxx,(中间是制表符),那么代码中的字符串应该是:xyz xxx或者xyz  xxx。

    注意看上面的demo,当我们需要将字符串中的某部分替换成另一部分时,用到了String的replaceAll()这个方法,这个方法的第一个参数是正则表达式。这里我们需要注意:

    java中,是转义字符,在正则表达式(正则表达式本身也相当于一门语言,不仅仅java有,其他语言也有)中,也是转义字符。正则表达式中 表示制表符,那么在java中表示此正则表达式制表符,就必须这样来表示:\t.  如果我们需要表示正则中的 本身(而不是制表符)呢?我们需要这样来表示:\\t.其实,它翻译成正则,就是\t,第一个反斜杠转义第二个,第三个反斜杠转义第四个,正则中,\t第一个反斜杠将第二个反斜杠转义为反斜杠本身,原理和java语言一样。 

  • 相关阅读:
    两个栈实现一个队列
    DacningLinks实现
    boost::implicit_cast
    hibernate查询之Criteria实现分页方法(GROOVY语法)
    VS2015 android 设计器不能可视化问题解决。
    当Eclipse爱上SVN
    你不知道的getComputedStyle
    推荐的软件
    React之表单
    理解javascript中的Function.prototype.bind
  • 原文地址:https://www.cnblogs.com/westward/p/5476217.html
Copyright © 2011-2022 走看看