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

时间:2009-06-30 22:04:42

标签: java string parsing

我有以下字符串,其中包含需要解析的单独分隔符,此刻我正在遇到一些问题。

例如

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

我想重新安排以下分组:

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

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

1:1相关联

第一次传球工作正常,但是一旦我击中第2类,一切都无效。我知道我错过了一些明显的东西,但我现在有点朦胧,Java不是我的第一语言。这是我到目前为止(sans delimiters)

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 个答案:

答案 0 :(得分:0)

首先编写一些junit测试,将输入作为字符串,以及您期望的输出结构。粘贴整个测试类,以及失败的实现。

答案 1 :(得分:0)

你的算法基本上是正确的。问题是String.split()使用正则表达式作为输入,而不是字符串。所以“||”并不意味着字符串“||”,它意味着正则表达式的意思。所以替换这个:

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

使用:

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

它应该有用。