java split教程

还是老样子,废话不多说,这里直接讲代码,后面讲故事。

第一章 代码实现

1、直接调用split方法,如果没有效果,带上英文的中括号就可以了。当然也可以使用两个\\来替换。效果是一样的。

public static void main(String[] args) {
    // 特殊符号【+】,【|】,【*】,【.】,【?】,【$】
    // 上面这6种特殊符号在split方法中会失效
    // 处理办法就是加上英文的中括号[]
    String text = "dd|cc|aa";
    String splitStr = "|";
    String[] texts = text.split(splitStr);
    // 由于没有做特殊处理,所以这里的结果是错误的
    // 由于没有做特殊处理,所以这里的结果是错误的
    // 由于没有做特殊处理,所以这里的结果是错误的
    log.info("texts={}",Arrays.asList(texts));


    // ------------------下面的结果都是正常的,随便选择一种方法
    // ------------------下面的结果都是正常的,随便选择一种方法
    // ------------------下面的结果都是正常的,随便选择一种方法
    // 这里加上英文的中括号,就正常了
    splitStr = "[|]";
    texts = text.split(splitStr);
    log.info("texts 加上英文中括号结果={}",Arrays.asList(texts));

    text = "馒头*面包*方便面";
    // 这里加上英文的中括号,就正常了
    splitStr = "[*]";
    texts = text.split(splitStr);
    log.info("texts 加上英文中括号结果={}",Arrays.asList(texts));


    text = "172.168.100.110";
    // 这里加上英文的中括号,就正常了
    splitStr = "[.]";
    texts = text.split(splitStr);
    log.info("texts 加上英文中括号[.]结果={}",Arrays.asList(texts));

    // 这里使用两个英文的反斜杠转义为特殊字符点,就正常了
    splitStr = "\\.";
    texts = text.split(splitStr);
    log.info("texts 加上英文两个斜杠\\\\.结果={}",Arrays.asList(texts));

}

2、控制台的输出结果,如下

16:06:58.828 [main] INFO cn.renkai721.controller.AsyncTestController - texts=[d, d, |, c, c, |, a, a]
16:06:58.830 [main] INFO cn.renkai721.controller.AsyncTestController - texts 加上英文中括号结果=[dd, cc, aa]
16:06:58.830 [main] INFO cn.renkai721.controller.AsyncTestController - texts 加上英文中括号结果=[馒头, 面包, 方便面]
16:06:58.830 [main] INFO cn.renkai721.controller.AsyncTestController - texts 加上英文中括号[.]结果=[172, 168, 100, 110]
16:06:58.830 [main] INFO cn.renkai721.controller.AsyncTestController - texts 加上英文两个斜杠\\.结果=[172, 168, 100, 110]

Process finished with exit code 0

第二章 唠嗑

1、split方法中的特殊字符一共有6个,分别是【+】,【|】,【*】,【.】,【?】,【$】。大家在使用split的方法时候,是要进行特殊处理的,否则是没有效果的。

2、还有一种很暴力的方法,就是先replace方法把这些特殊字符转换为普通的符号,例如英文的逗号,在调用split方法就可以了。

3、查阅split官网的使用规则及操作。大概的翻译如下,以下翻译来自有道翻译。

此方法返回的数组包含this的每个子字符串

由另一个匹配给定的子字符串终止的字符串

表达式或以字符串结尾结束。的子字符串

数组按照它们在这个字符串中出现的顺序排列。如果

表达式不匹配输入的任何部分,然后匹配结果数组

只有一个元素,即这个字符串。

当在此开头有一个正宽度匹配时

字符串,则在开头包含一个空的前导子字符串

结果数组的。然而,一开始是零宽度的匹配

永远不要产生这样的空前导子字符串。

参数{@code limit}控制

模式被应用,因此影响结果的长度

数组中。如果极限<i>n</i>大于零,则模式

将被应用最多<i>n</i>1次,数组的

长度将不大于<i>n</i>,以及数组的最后一个条目

将包含最后一个匹配的分隔符以外的所有输入。如果n <我> < / i >

那么是非正的模式会被应用多少次

可能的和数组可以有任何长度。如果<i>n</i>为零,那么

该模式将被应用尽可能多的次数,数组可以

如果有任何长度,那么后面的空字符串将被丢弃。

例如,字符串{@code "boo:and:foo"}将生成

以下是带有这些参数的结果:


版权声明:本文为renkai721原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。