【问题标题】:StringTokenizer for multiple multi-charecter tokens in JAVA?JAVA中多个多字符令牌的StringTokenizer?
【发布时间】:2012-05-22 10:57:58
【问题描述】:

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

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

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

【问题讨论】:

  • 你如何区分'|' '||' '|||' ?
  • 其实我想要token '|', '||'也在结果数组中......而word1,word2是数据库表中的列名......我需要将结果作为value1:value2|value3||value4|value5|||value6|value7从DB价值观..
  • 您需要结果中的分隔符吗?

标签: java regex arrays string


【解决方案1】:

您可以使用StringUtils Lang API。

请查找相同 here 的 Javadocs。

它有以下方法-

  1. Substring/Left/Right/Mid - 空安全子字符串提取
  2. SubstringBefore/SubstringAfter/SubstringBetween - 相对于其他字符串的子字符串提取

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

      line.split ("[^:|]+") 
      res114: Array[java.lang.String] = Array("", :, |, ||, |, |||, |)
      

      【讨论】:

        【解决方案4】:

        我不知道是否有可用的 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);
            }
        

        【讨论】:

          猜你喜欢
          • 2021-03-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多