java split()使用“.” “\” "|" "*" "+"来分割时,需要转义

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class test{
 
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        String string=in.nextLine();
        //要使用"."分割,必须使用\\转义:如:split("\\.");
        //regex为\\\\,因为在java中\\表示一个\,而regex中\\也表示\,所以当\\\\解析成regex的时候为\\。 
        String[] strs=string.split("\\\\");
        for(String s:strs){
        	System.out.println(s);
        }
    }
 
}

https://www.jianshu.com/p/29160d7b41d5

在Java中,不管是String.split(),还是正则表达式,有一些特殊字符需要转义,

这些字符是

(    [     {    /    ^    -    $     ¦    }    ]    )    ?    *    +    . 

转义方法为字符前面加上"\\",这样在split、replaceAll时就不会报错了;

不过要注意,String.contains()方法不需要转义。


https://www.cnblogs.com/ylht/p/10249543.html

split("\\.")是什么意思

\\会转义成反斜杠,反斜杠本身就是转义符,所有就成了“\.”,在进行转义就是.,所以\\.实际上是“.”。
在java.lang包中也有String.split()方法,与.net的类似,都是返回是一个字符型数组,但使用过程中还有一些小技巧。
如执行:"2|33|4".split("|")
出来的结果是:
""
2
|
3
3
|
4
奇怪吧,不过注意看一下API说明还是知道原因的.
java.lang.string.split
split 方法
将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
stringObj.split([separator,[limit]])
参数
stringObj
必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。
separator
可选项。字符串或 正则表达式对象,它标识了分隔字符串时使用的是一个还是多个字符。如果忽略该选项,返回包含整个字符串的单一元素数组。
limit
可选项。该值用来限制返回数组中的元素个数。
说明
split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解

所以正常的写法是这样的:
1、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
2、如果用“|”作为分隔的话,必须是如下写法:String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
“.”和“|”都是转义字符,必须得加"\\";
3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“a=1 and b =2 or c=3”,把三个都分隔出来,可以用String.split("and|or");
split分隔符总结
1.字符"|","*","+"都得加上转义字符,前面加上"\\"。
2.而如果是"\",那么就得写成"\\\\"。
3.如果一个字符串中有多个分隔符,可以用"|"作为连字符。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值