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

小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. HttpClient的CircularRedirectException异常原因及解决办法

    HttpClient的CircularRedirectException异常原因及解决办法 这两天在使用我自己爬虫抓取网页的时候总是出现 org.apache.http.client.ClientPr ...

  2. [转]ubuntu下安装程序的三种方法

    出处:http://www.cnblogs.com/xwdreamer/p/3623454.html 引言 在ubuntu当中,安装应用程序我所知道的有三种方法,分别是apt-get,dpkg安装de ...

  3. mysql 执行计划的理解

    1.执行计划就是在sql语句之前加上explain,使用desc 也可以.2.desc有两个选项extended和partitions,desc extended 将原sql语句进行优化,通过show ...

  4. mysql delimiter

    默认情况下,mysql遇到分号; 就认为是一个命令的终止符, 就会执行命令.而有些时候,我们不希望这样,比如存储过程中包含多个语句,这些语句以分号分割,我们希望这些语句作为一个命令,一起执行,怎么解决 ...

  5. ean13码的生成,python读取csv中数据并处理返回并写入到另一个csv文件中

    # -*- coding: utf-8 -*- import math import re import csv import repr def ean_checksum(eancode): &quo ...

  6. 图片的copy,从一个目录复制到另一个目录

    代码: public function index(){ $path='G:/相片/2014.9.8深圳莲花山/IMG_1282.JPG'; $path=iconv('utf-8','gb2312', ...

  7. Java源码初学_AbstractList&AbstractCollection

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

  8. 基本分类方法——KNN(K近邻)算法

    在这篇文章 http://www.cnblogs.com/charlesblc/p/6193867.html 讲SVM的过程中,提到了KNN算法.有点熟悉,上网一查,居然就是K近邻算法,机器学习的入门 ...

  9. Object Pascal 方法与技巧

    4 方法与技巧 4.1 设置代码模板 代码模板是Delphi 的代码感知特性的一种,通过它可以快速.高效和正确地输入代码.代码模板将一些常用的语句块保存在模板中,然后程序员只要在代码编辑器中按下“Ct ...

  10. android实现系统电话通话过程中自动感应黑屏

    package com.developmenttools.customui.activity; import java.util.HashSet;import java.util.Set; impor ...