Java教程

Java String split()

java String split()方法根据给定的正则表达式拆分此字符串,并返回一个char数组。

内部实现

public String[] split(String regex, int limit) {
        char ch = 0;
        if (((regex.value.length == 1 &&
             ".$|()[{^?*+\\".indexOf(ch = regex.charAt(0)) == -1) ||
             (regex.length() == 2 &&
              regex.charAt(0) == '\\' &&
              (((ch = regex.charAt(1))-'0')|('9'-ch)) < 0 &&
              ((ch-'a')|('z'-ch)) < 0 &&
              ((ch-'A')|('Z-ch)) < 0)) &&
    (ch < Character.MIN_HIGH_SURROGATE || ch > Character.MAX_LOW_SURROGATE)) {
        int off = 0;
        int next = 0;
        boolean limited = limit >0;
        ArrayList<String> list = new ArrayList<>();
        while ((next = indexOf(ch, off)) != -1) {
            if (!limited || list.size() < limit - 1) {
                list.add(substring(off, next));
                off = next + 1;
            }
            else {
                // last one
                //assert (list.size() == limit - 1);
                list.add(substring(off, value.length));
                off = value.length;
                break;
            }
        }
        return this if (off == 0) return new String[]{this};
        if (!limited || list.size() < limit) list.add(substring(off, value.length));
        int resultSize = list.size();
        if (limit == 0) while (resultSize > 0 && list.get(resultSize - 1).length() == 0) resultSize--;
        String[] result = new String[resultSize];
        return list.subList(0, resultSize).toArray(result);
    }
    return Pattern.compile(regex).split(this, limit);
}

签名

java字符串中的split()方法有两个签名。
public String split(String regex)and,public String split(String regex, int limit)

参数

regex : 要应用于字符串的正则表达式。
限制: 限制数组中的字符串数。如果为零,将返回所有与正则表达式匹配的字符串。

返回

字符串数组

抛出

PatternSyntaxException 如果正则表达式的模式无效

1.4

Java字符串split()方法示例

给定的示例返回字符串中的单词总数,但不包括空格。它还包含特殊字符。
public class SplitExample{
    public static void main(String args[]){
        String s1="java string split method by lidihuo";
        String[] words=s1.split("\\s");
        //splits the string based on whitespace
        for(String w:words){
            System.out.println(w);
        }
    }
}
java
string
split
method
by
lidihuo

带有正则表达式和长度示例的Java String split()方法

public class SplitExample2{
    public static void main(String args[]){
        String s1="welcome to split world";
        System.out.println("returning words:");
        for(String w:s1.split("\\s",0)){
            System.out.println(w);
        }
        System.out.println("returning words:");
        for(String w:s1.split("\\s",1)){
            System.out.println(w);
        }
        System.out.println("returning words:");
        for(String w:s1.split("\\s",2)){
            System.out.println(w);
        }
    }
}
returning words:
welcome
to
split
world
returning words:
welcome to split world
returning words:
welcome
to split world

带有正则表达式和长度示例2的Java String split()方法

在这里,我们将split limit作为第二个参数传递给此函数。这限制了分割字符串的数量。
public class SplitExample3 {
    public static void main(String[] args) {
        String str = "lidihuott";
        System.out.println("Returning words:");
        String[] arr = str.split("t", 0);
        for (String w : arr) {
            System.out.println(w);
        }
        System.out.println("Split array length: "+arr.length);
    }
}
Returning words:
lidihuo
Split array length: 1
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4