我需要根据多个令牌拆分一个字符串,这些令牌也可能有多个字符,如下所示,
word1:word2|word3||word4|word5|||word6|word7
我需要根据':','|','||','|||'标记上面的字符串。是否可以使用 StringTokenizer 或者使用正则表达式拆分对其进行标记的代码是什么?.. 请记住,我还需要结果数组中的标记...
您可以使用StringUtils
Lang API。
请在此处找到相同的 Javadocs 。
它有以下方法——
Substring/Left/Right/Mid
- 空安全子字符串提取SubstringBefore/SubstringAfter/SubstringBetween
- 相对于其他字符串的子字符串提取显然,您可以像这样拆分字符串:
line.split ("[:|]+")
res113: Array[java.lang.String] = Array(word1, word2, word3, word4, word5, word6, word7)
但是分隔符是什么?好吧 - 显然相反:
line.split ("[^:|]+")
res114: Array[java.lang.String] = Array("", :, |, ||, |, |||, |)
这可以通过 StringTokenizer 实现。但这必须是多步骤的过程。
我不知道是否有可用的 API。你可以像下面这样解决。
步骤应该。
1.取字符串
2.定义要替换的正则表达式 //你应该提前知道它们
3.循环所有表达式
4.用空格替换每个表达式。
5.现在您可以使用字符串标记器。
String str="word1:word2|word3||word4|word5|||word6|word7";
String[] tokens={"[:]","[|]{3}","[|]{2}","[|]"};
for (int i = 0; i < tokens.length; i++) {
str=str.replaceAll(tokens[i], " ");
System.out.println(str);
}