-2

我需要根据多个令牌拆分一个字符串,这些令牌也可能有多个字符,如下所示,

word1:word2|word3||word4|word5|||word6|word7

我需要根据':','|','||','|||'标记上面的字符串。是否可以使用 StringTokenizer 或者使用正则表达式拆分对其进行标记的代码是什么?.. 请记住,我还需要结果数组中的标记...

4

4 回答 4

1

您可以使用StringUtilsLang API。

请在此处找到相同的 Javadocs 。

它有以下方法——

  1. Substring/Left/Right/Mid- 空安全子字符串提取
  2. SubstringBefore/SubstringAfter/SubstringBetween- 相对于其他字符串的子字符串提取
于 2012-05-22T11:02:56.890 回答
0

显然,您可以像这样拆分字符串:

line.split ("[:|]+") 
res113: Array[java.lang.String] = Array(word1, word2, word3, word4, word5, word6, word7)

但是分隔符是什么?好吧 - 显然相反:

line.split ("[^:|]+") 
res114: Array[java.lang.String] = Array("", :, |, ||, |, |||, |)
于 2012-05-22T12:25:20.210 回答
0

这可以通过 StringTokenizer 实现。但这必须是多步骤的过程。

于 2012-05-22T11:05:28.110 回答
-1

我不知道是否有可用的 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);
    }
于 2012-05-22T11:19:13.603 回答