字符串分隔符字符串.拆分方法

2022-09-01 00:19:16

我有以下数据:

1||1||Abdul-Jabbar||Karim||1996||1974

我想划定令牌。

此处的分隔符是 。"||"

我的分隔符设置器是:

public void setDelimiter(String delimiter) {
    char[] c = delimiter.toCharArray();
    this.delimiter = "\"" + "\\" + c[0] + "\\" + c[1] + "\"";
    System.out.println("Delimiter string is: " + this.delimiter);
}

然而

String[] tokens = line.split(delimiter);

未给出所需的结果。


答案 1

无需像您所做的那样,通过将其分解为多个部分来设置分隔符。

这是一个完整的程序,你可以编译和运行:

import java.util.Arrays;
public class SplitExample {
    public static final String PLAYER = "1||1||Abdul-Jabbar||Karim||1996||1974";
    public static void main(String[] args) {
        String[] data = PLAYER.split("\\|\\|");
        System.out.println(Arrays.toString(data));
    }
}

如果要将拆分与模式结合使用,可以使用 或 。Pattern.compilePattern.quote

要查看和操作,下面是一个使用所有三种方法的示例:compilequote

import java.util.Arrays;
import java.util.regex.Pattern;
public class SplitExample {
    public static final String PLAYER = "1||1||Abdul-Jabbar||Karim||1996||1974";
    public static void main(String[] args) {
        String[] data = PLAYER.split("\\|\\|");
        System.out.println(Arrays.toString(data));

        Pattern pattern = Pattern.compile("\\|\\|");
        data = pattern.split(PLAYER);
        System.out.println(Arrays.toString(data));

        pattern = Pattern.compile(Pattern.quote("||"));
        data = pattern.split(PLAYER);
        System.out.println(Arrays.toString(data));
    }
}

如果要经常使用相同的模式进行拆分,则建议使用模式。顺便说一句,输出是:

[1, 1, Abdul-Jabbar, Karim, 1996, 1974]
[1, 1, Abdul-Jabbar, Karim, 1996, 1974]
[1, 1, Abdul-Jabbar, Karim, 1996, 1974]

答案 2

使用 Pattern#quote() 方法进行转义 。尝试:||

final String[] tokens = myString.split(Pattern.quote("||"));

这是必需的,因为它是一个交替字符,因此在传递调用时获得特殊含义(基本上参数 to 是字符串形式的正则表达式)。|splitsplit