我有以下字符串,其中包含需要解析的单独分隔符,此刻我正在遇到一些问题。
例如:
类别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;
任何帮助或优化的方法肯定会受到赞赏!
答案 0 :(得分:0)
首先编写一些junit测试,将输入作为字符串,以及您期望的输出结构。粘贴整个测试类,以及失败的实现。
答案 1 :(得分:0)
你的算法基本上是正确的。问题是String.split()使用正则表达式作为输入,而不是字符串。所以“||”并不意味着字符串“||”,它意味着正则表达式的意思。所以替换这个:
subGroupArray[counter].split("||");
使用:
subGroupArray[counter].split("\\|\\|");
它应该有用。