java转义字符探究恢复
今天工作的时候,遇到了个奇怪的问题,是关于字符串转义与替换的。最后终于解决了,特总结
下。
小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转义字符探究恢复的更多相关文章
- java转义字符
JAVA中转义字符: 1.八进制转义序列:\ + 1到3位5数字:范围'\000'~'\377' \0:空字符 2.Unicode转义字符:\u + 四个十六进制数字:0~65535 ...
- 常用的Java转义字符
1.常用的Java转义字符 \n : 回车 \t : 水平制表符 \r : 换行 \f : 换页 \' : 单引号 \'' : 双引号 ...
- java 转义字符"\u0010" "\010" "\2"等
java转义字符 \xxx 八进制转义符 \uxxxx 十六进制转义符 像"\010","\u0010"这种字符 ...
- JAVA——转义字符
目录 1.Java转义字符 2.Java中的注释 2.1Java 中的注释类型 2.2文档注释 3.Java代码规范 4.Java开发注意事项和细节说明 1.Java转义字符 在控制台,输入 tab ...
- Android,使用Json发送数据中,使用的Java转义字符 KanKan原创
kankan原创 与php后台发送数据的时候.要求用到这样的格式. private void sendJson(){ //初始化自己定义的handler CashHandler handler = n ...
- 从[java.lang.OutOfMemoryError: Java heap space]恢复
出现java.lang.OutOfMemoryError: Java heap space该错误或者是程序问题,或者被分配到JVM内存真的是不够的. 一般来说都是能够事前可控解决的. 可是假设不可控的 ...
- java深入探究08-连接池,分页
1.连接池 1)自定义连接池 思路:定义一个类Pool->添加4个属性(最大连接数,初始化连接数,当前连接数,用来存放连接对象的LinkList集合对象)->定义一个createConne ...
- java深入探究01
经过前面基础部门的学习,希望大家都把基础打闹再继续深入探究java应用层面的知识,以后的日子我会继续更新java进阶知识,深入探究实际工作中的java应用,说的不好的地方还请见谅,如果能提出你宝贵的建 ...
- java备份和恢复数据代码例子
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.F ...
随机推荐
- iOS - OC NSLocale 本地化信息
前言 @interface NSLocale : NSObject <NSCopying, NSSecureCoding> NSLocale 类返回本地化信息,主要体现在"语言& ...
- 阿里云大数据三次技术突围:Greenplum、Hadoop和“飞天”
阿里云大数据三次技术突围:Greenplum.Hadoop和"飞天" 对于企业来说,到底什么是云计算?相信很多企业都有这样的困惑,让我们一起回到这个原始的起点探讨究竟什么是云 ...
- html textarea 获取换行
1.需求: 获取textarea中的换行符,存到数据库中,并在取出时显示出换行操作 2.实践 2.1 发现可以取到换行符 "/n" ,并且可以存储到MySQL数据库中,并不需要特殊 ...
- 没办法,还是要补一下js,回调函数(转载)
<html> <head> <title>回调函数(callback)</title> <script language="javasc ...
- maven核心概念4
一.Maven坐标 1.1.什么是坐标? 在平面几何中坐标(x,y)可以标识平面中唯一的一点. 1.2.Maven坐标主要组成 groupId:组织标识(包名) artifactId:项目名称 ver ...
- Linux命令之nslookup
http://www.computerhope.com/unix/unslooku.htm About nslookup The nslookup command is used to query i ...
- 【Todo】秒杀系统材料
秒杀系统:Link <一个经验证可落地的秒杀系统实践思路> 主要依赖于Redis进行处理. http://geek.csdn.net/news/detail/59847 淘宝大秒系统设 ...
- IE浏览器GET传参后台乱码
ie里面 get传递的字符串 为 gb2312 ,后台用的是utf-8类型 所以用 POST传递字符串到后端 否则进行js参数转码 encodeURI(""); 后端解码
- hiho_1139_二分+bfs搜索
题目 给定N个点和M条边,从点1出发,到达点T.寻找路径上边的个数小于等于K的路径,求出所有满足条件的路径中最长边长度的最小值. 题目链接:二分 最小化最大值,考虑采用二分搜索.对所有的边长进 ...
- JavaScript 返回值
Window.Open()返回值: 利用window.open(‘NewWindow.html’):打开新的窗口NewWindow.html后,如果有返回值需要处理,应通过window.opener. ...