Java中的转义符及在正则表达式中应用

前言

日常开发中经常遇到需要对字符进行转义的场景,比如 Windows 系统和 Linux 系统中对于文件路径符的不同表示。通常,笔者为了赶进度基本靠试而没有真正理解,现在有时间了便好好整理一番。

Java中的转义符

Java中的字符串通常有三种表示方法:

  • 直接单字符,例如“A”;
  • 由转义字符表示的特殊字符,例如“\t”;
  • Unicode字符,例如“\u0008”;

其中转义字符表示的字符串,显示出来的就是这种模式,例如“\t”与“  ”是同一个字符串,“abc\tefg”与”abc  efg”是同一个字符串。其实第一、三两种方法大同小异,本文重点来说一下第二种方法。

通常Java中需要的转义的场景如下:

  • 八进制转义序列:\ + 1到3位数字;范围’\000’~’\377’
    \0:空字符

  • Unicode转义字符:\u + 四个十六进制数字;0~65535
    \u0000:空字符

  • 特殊字符
    \”:双引号
    \’:单引号
    \\:反斜线

  • 控制字符
    \r 回车
    \n 换行
    \f 走纸换页
    \t 横向跳格
    \b 退格

从上面可以看出,单独的“\”是不能出现在Java的字符串中作为字符串的,比如说如果要打印“abc\efg”,这时会报错:“错误:非法转义符”。这是因为系统把“\e“当做转义符,但是实际上并没有这个转义符。如果真的要将“\”作为一个符号打印输出,那么就应该在”\”前面再加一个“\”以表示后面的“\”是要被输出,例如打印输出“abc\efg”,这时终端就会显示“abc\efg”。

转义字符串在正则表达式中的应用

日常开发中,转义字符串在正则表达式中的应用主要体现在对字符串的处理上,而对字符串的处理无外乎如下三种情况:

  • 对字符串的分割

    一般而言,我们使用 String#split 方法对字符串进行分割操作,需要注意的是,参数regex是一个 regular-expression 的匹配模式而不是一个简单的String。

  • 对字符串的替换

    Java中的 String#replace 和 String#replaceAll 方法都能实现字符串的替换功能,但是两者有较大区别。

    1,replace 的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);

    2,replaceAll 的参数是regex,即基于正则表达式的替换,比如:可以通过replaceAll(“\d”, “*”)把一个字符串所有的数字字符都换成星号;

此外,\ 在java中是一个转义字符,所以需要用两个代表一个,而 \ 也是正则表达式中的转义字符(replaceAll 的参数就是正则表达式),需要用两个代表一个,所以当我们使用 replaceAll 将 \ 替换成 \\ ,就要用 replaceAll (“\\”,”\\\\”)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值