我有以下数据:
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);
没有给出所需的结果。
无需像您所做的那样通过将分隔符拆分来设置分隔符。
这是可以编译和运行的完整程序:
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.compile或Pattern.quote。
Pattern.compile
Pattern.quote
要查看compile并quote付诸实践,下面是使用所有三种方法的示例:
compile
quote
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]