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

小demo,

package com.westward;

public class Demo {

    /**
* 1.将字符串 "a b"替换为"a 1b".ab之间不是空格,是制表符。
* 2.将字符串 "a\tb"替换为"a 2b".
* */
public static void main(String[] args) {
// TODO Auto-generated method stub
String string1= "a\tb";
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\tb
---------转换开始-----------
format:string1 =a 1b
format:string2 =a 2b

总结:

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

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

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

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

java转义字符探究恢复的更多相关文章

  1. java转义字符

    JAVA中转义字符: 1.八进制转义序列:\ + 1到3位5数字:范围'\000'~'\377'       \0:空字符 2.Unicode转义字符:\u + 四个十六进制数字:0~65535    ...

  2. 常用的Java转义字符

    1.常用的Java转义字符 \n :  回车       \t : 水平制表符       \r : 换行       \f : 换页       \' : 单引号      \'' : 双引号   ...

  3. java 转义字符"\u0010" "\010" "\2"等

    java转义字符 \xxx                八进制转义符 \uxxxx          十六进制转义符 像"\010","\u0010"这种字符 ...

  4. JAVA——转义字符

    目录 1.Java转义字符 2.Java中的注释 2.1Java 中的注释类型 2.2文档注释 3.Java代码规范 4.Java开发注意事项和细节说明 1.Java转义字符 在控制台,输入 tab ...

  5. Android,使用Json发送数据中,使用的Java转义字符 KanKan原创

    kankan原创 与php后台发送数据的时候.要求用到这样的格式. private void sendJson(){ //初始化自己定义的handler CashHandler handler = n ...

  6. 从[java.lang.OutOfMemoryError: Java heap space]恢复

    出现java.lang.OutOfMemoryError: Java heap space该错误或者是程序问题,或者被分配到JVM内存真的是不够的. 一般来说都是能够事前可控解决的. 可是假设不可控的 ...

  7. java深入探究08-连接池,分页

    1.连接池 1)自定义连接池 思路:定义一个类Pool->添加4个属性(最大连接数,初始化连接数,当前连接数,用来存放连接对象的LinkList集合对象)->定义一个createConne ...

  8. java深入探究01

    经过前面基础部门的学习,希望大家都把基础打闹再继续深入探究java应用层面的知识,以后的日子我会继续更新java进阶知识,深入探究实际工作中的java应用,说的不好的地方还请见谅,如果能提出你宝贵的建 ...

  9. java备份和恢复数据代码例子

    import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.F ...

随机推荐

  1. Java源码初学_AbstractList&AbstractCollection

    一.AbstractCollection抽象类:(提供了Collection接口的骨干实现,以减少实现接口所需要的工作) 1.contains方法 contains方法,通过迭代器对于列表的每一个元素 ...

  2. 机器学习如何选择模型 & 机器学习与数据挖掘区别 & 深度学习科普

    今天看到这篇文章里面提到如何选择模型,觉得非常好,单独写在这里. 更多的机器学习实战可以看这篇文章:http://www.cnblogs.com/charlesblc/p/6159187.html 另 ...

  3. OpenGL的glScalef缩放变换函数详解

    glScalef是openGL中的模型缩放函数,就是把当前矩阵与一个表示延各个轴对物体进行拉伸.压缩.反射的矩阵相乘.这个物体的每个点的x,y,z坐标与对应的xyz参数相乘. 先看函数定义void g ...

  4. Fedora 防火墙关闭与开启

    重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off   或者 /sbin/chkconfig --level 2345 iptable ...

  5. 20160815_Redis安装

    OS: CentOS6.4(x64) 参考网址: http://www.cnblogs.com/haoxinyue/p/3620648.html http://www.codeceo.com/arti ...

  6. js倒计时 网上流传最多的

    <!DOCTYPE html><html><head><script src="http://libs.baidu.com/jquery/1.10. ...

  7. git服务器搭建-new

    http://blog.chinaunix.net/uid-26729093-id-4652536.html 基本命令使用:http://www.cnblogs.com/xdao/p/linux_gi ...

  8. winScp 跳板机到服务器

    http://jingyan.baidu.com/article/454316ab6ffe1af7a7c03a31.html?qq-pf-to=pcqq.group

  9. (转)TCP、UDP、IP协议

    原文地址:http://blog.chinaunix.net/uid-26833883-id-3627644.html   互连网早期的时候,主机间的互连使用的是NCP协议.这种协议本身有很多缺陷,如 ...

  10. #array_parents #parents的区别

    https://www.drupal.org/node/279246 #array_parents  => 一定会反映表单的物理结构 就是该是哪个下面就是哪个下面 不来虚的#parents  = ...