【发布时间】:2017-05-01 14:31:07
【问题描述】:
我想用逗号分割字符串,但<p></p> 中的逗号应该被忽略。
例如,如果我有以下字符串
" Test1, test2, <p> test3, test4, test5, </p> , test6, test7"
我需要的结果是:
Test1
Test2
<p> test3, test4, test5, </p>
test6
test7
使用特殊字符如何实现?
【问题讨论】:
我想用逗号分割字符串,但<p></p> 中的逗号应该被忽略。
例如,如果我有以下字符串
" Test1, test2, <p> test3, test4, test5, </p> , test6, test7"
我需要的结果是:
Test1
Test2
<p> test3, test4, test5, </p>
test6
test7
使用特殊字符如何实现?
【问题讨论】:
你可以用这个正则表达式,(?![^<p>]*</p>)分割你的字符串:
String str = "Test1, test2, <p> test3, test4, test5, </p> , test6, test7";
String spl[] = str.split(",(?![^<p>]*</p>)");
输出
Test1
test2
<p> test3, test4, test5, </p>
test6
test7
演示在这里:
【讨论】:
[^<p>] 看起来很可疑。这是“任何不是'>'、'
你有什么想法吗?
<p>?某种嵌套的负前瞻?我不是那个回答的人:)
,<p.../> 后面跟着另一个 , ,所以它看到两个分隔符彼此相邻。我将把修复这个问题留给读者作为练习。
您可以先使用“p>”进行拆分:
String[] temp = input.split("p>");
在您的示例中,您将在 temp 中包含三个元素:
现在在 temp 中的所有字符串中,替换 '' 和 '
最后,再次使用 ',' 分割每一行。
除了一些(易于移除的)空字符串之外,它应该可以工作
【讨论】:
这应该可行,它不是最理想的,抱歉,但我想不到。
public static void main(String args[]) {
String x = " Test1, test2, <p> test3, test4, test5, </p> , test6, test7";
String newX[];
newX = x.split(",");
String newString = "";
int j = 0;
int count = 0;
for(int i = 0; i < newX.length; i ++) {
if(newX[i].contains("<p>")) {
count ++;
j=i;
while(!newX[i].contains("</p>")) {
newString = newString + "," + newX[i];
newX[i] = "";
i++;
}
newString = newString + "," + newX[i];
newX[i] = "";
newX[j] = newString;
newX[j] = newX[j].replaceFirst(",", "");
}
else
count++;
}
String output[] = new String[count];
j = 0;
for(int i = 0; i < newX.length; i++) {
if(newX[i] != "" && j < count) {
output[j] = newX[i];
System.out.println(output[j]);
j++;
}
}
}
【讨论】: