代码之家  ›  专栏  ›  技术社区  ›  godel

Java-解析多分隔/维字符串

  •  0
  • godel  · 技术社区  · 15 年前

    我有下面的字符串,其中有单独的分隔符需要解析,现在我碰到了一堵墙。

    例子 :

    类别1---类别2;子组1子组2---子组1;值1值2---值3

    我想重新安排成以下分组:

    类别1;子组1;值1;子组2;值2;类别2;子组1;值1

    “--”分隔符分隔类别及其值。 分隔符“”分隔属于同一类别的字段 分隔符“;”分隔字段类型(类别;子组;值) 可以有n个类别,它们可以有n个子组。
    每个值与其子组1:1关联

    第一次通过很好,但一旦我达到第二类,一切就空了。我知道我缺少一些显而易见的东西,但我现在有点模糊,Java不是我的第一语言。这是我到目前为止所拥有的(无分隔符)

    StringBuilder result = new StringBuilder();
    String categoryArray[] = category.split("---");
    String subGroupArray[] = subgroup.split("---");
    String valueArray[] = value.split("---");
    
     for (int counter=0; counter<categoryArray.length;counter++){
    
    
         String categoryArray2[] = categoryArray[counter].split("\\|\\|");
         String subGroupArray2[] = subGroupArray[counter].split("\\|\\|");
         String valueArray2[] = valueArray[counter].split("\\|\\|");
    
             result.append(categoryArray[counter].trim());
         for (int counter2=0; counter2<subGroupArray2.length;counter2++){
    
             result.append(subGroupArray2[counter2].trim());
             result.append(valueArray2[counter2].trim());
    
         }
         result.append("||");
    
     }
    return result;
    



    任何帮助或优化的方法都将不胜感激!

    2 回复  |  直到 15 年前
        1
  •  0
  •   jameshales    15 年前

    你的算法基本上是正确的。问题是string.split()将regexes用作输入,而不是字符串。所以“”并不表示字符串“”,它表示regex的任何含义。因此,替换这个:

    subGroupArray[counter].split("||");
    

    用:

    subGroupArray[counter].split("\\|\\|");
    

    它应该是有效的。

        2
  •  0
  •   Thorbjørn Ravn Andersen    15 年前

    首先编写一些JUnit测试,将输入作为字符串,然后编写预期的输出结构。在这里粘贴整个测试类,以及失败的实现。