📜  Java字符串split()

📅  最后修改于: 2020-09-27 02:45:20             🧑  作者: Mango

Java String split()方法在指定的正则表达式处分割字符串 ,并返回子字符串数组。

字符串 split()方法的语法为:

string.split(String regex, int limit)

在这里, 字符串String类的对象。


split()参数

字符串 split()方法可以采用两个参数:

  • regex- 字符串在此regex处分割(可以是字符串)
  • 限制 (可选)-控制生成的子字符串的数量

如果未传递limit参数,则split()返回所有可能的子字符串。


split()返回值
  • 返回子字符串数组

注意:如果传递给split()的正则表达式无效,则split()方法将引发PatternSyntaxExpression异常。


示例1:split()无限制参数
// importing Arrays to convert array to string
// used for printing arrays
import java.util.Arrays;

class Main {
    public static void main(String[] args) {
        String vowels = "a::b::c::d:e";

        // splitting the string at "::"
        // storing the result in an array of strings
        String[] result = vowels.split("::");

        // converting array to string and printing it
        System.out.println("result = " + Arrays.toString(result));
    }
}

输出

result = [a, b, c, d:e]

在这里,我们在::处分割字符串 。由于未传递limit参数,因此返回的数组包含所有子字符串。


带限制参数的split()
  • 如果limit参数为0或负数,则split()返回包含所有子字符串的数组。
  • 如果limit参数为正(假设为n ),则split()返回n个子字符串的最大值。

示例2:带限制参数的split()

// importing Arrays to convert array to string
import java.util.Arrays;

class Main {
    public static void main(String[] args) {
        String vowels = "a:bc:de:fg:h";

        // splitting array at ":"

        // limit is -2; array contins all substrings
        String[] result = vowels.split(":", -2);
        System.out.println("result when limit is -2 = " + Arrays.toString(result));

        // limit is 0; array contains all substrings
        result = vowels.split(":", 0);
        System.out.println("result when limit is 0 = " + Arrays.toString(result));

        // limit is 2; array contains a maximum of 2 substrings
        result = vowels.split(":", 2);
        System.out.println("result when limit is 2 = " + Arrays.toString(result));

        // limit is 4; array contains a maximum of 4 substrings
        result = vowels.split(":", 4);
        System.out.println("result when limit is 4 = " + Arrays.toString(result));

        // limit is 10; array contains a maximum of 10 substrings
        result = vowels.split(":", 10);
        System.out.println("result when limit is 10 = " + Arrays.toString(result));
    }
}

输出

result when limit is -2 = [a, bc, de, fg, h]
result when limit is 0 = [a, bc, de, fg, h]
result when limit is 2 = [a, bc:de:fg:h]
result when limit is 4 = [a, bc, de, fg:h]
result when limit is 10 = [a, bc, de, fg, h]

注意: split()方法将正则表达式作为第一个参数。如果需要使用特殊字符,例如: \|^*+等,您需要转义这些字符。例如,我们需要使用\\++处进行拆分。


示例3:+ 字符处的split()
// importing Arrays to convert array to string
// used for printing arrays
import java.util.Arrays;

class Main {
    public static void main(String[] args) {
        String vowels = "a+e+f";

        // splitting the string at "+"
        String[] result = vowels.split("\\+");

        // converting array to string and printing it
        System.out.println("result = " + Arrays.toString(result));
    }
}

输出

result = [a, e, f]

在这里,要在+处分割字符串 ,我们使用了\\+ 。这是因为+是一个特殊字符 (在正则表达式中具有特殊含义)。