前言
这两天利用业余时间在开发一款小程序,其中遇到一个对一串字符串进行分割的问题,字符串如下:
String content = "(肉干、红枣、中药材)、纸板箱、报纸、废弃书本、快递纸袋、 打印纸、信封、广告单、纸塑铝复合包装(利乐、包)、";
此字符串已是最复杂的一种情况,不需要再考虑其他情况了。现在要对这串字符串以'、'进行分割,但是括号内的'、'不能作为分割依据,这串字符串的正确分割结果如下:
(肉干、红枣、中药材)
纸板箱
报纸
废弃书本
快递纸袋
打印纸
信封
广告单
纸塑铝复合包装(利乐、包)
怎么样?想到思路了吗?
需要稍微费点脑筋,不过挺有意思的,下面有我的实现代码,不过建议自己尝试一下,看看有没有更好的方法
我的代码实现:
String content = "(肉干、红枣、中药材)、纸板箱、报纸、废弃书本、快递纸袋、 打印纸、信封、广告单、纸塑铝复合包装(利乐、包)、";
int index = 0, length = content.replaceAll(" ","").length();
char left = '(', right = ')', split = '、', str;
boolean stop = true;
StringBuffer temp = new StringBuffer();
content = content.replaceAll(" ","");
while (index < length) {
str = content.charAt(index);
if (str == left || str == right || str == split) {
if (str == left || str == right) {
if (str == left) {
temp.append(str);
stop = false;
index++;
} else {
temp.append(str);
stop = true;
index++;
}
} else {
if (stop) {
System.out.println(temp);
temp = new StringBuffer();
index++;
} else {
temp.append(str);
index++;
}
}
} else {
temp.append(str);
index++;
if (index == length - 1) {
char endChar = content.charAt(index);
if (endChar != split) {
temp.append(content.charAt(index));
}
System.out.println(temp);
}
}
}