Java:用逗号分割并忽略标记<p>中的逗号

时间:2017-05-01 14:31:08

标签: java arrays regex split

我想用逗号分割字符串,但应忽略<p></p>内的逗号。

例如,如果我有以下字符串

" Test1, test2, <p> test3, test4, test5, </p> , test6, test7" 

我需要结果:

Test1
Test2
<p> test3, test4, test5, </p>
test6 
test7

使用特殊字符我该如何实现?

3 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式,(?![^<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

在这里演示:

Rextester

答案 1 :(得分:0)

您可以先使用&#34; p&gt;&#34;进行拆分: {{1}}

您的示例中将包含三个temp元素:

  • &#34; Test1,test2,&lt;&#34;
  • &#34; p为H. test3,test4,test5,
  • &#34; p为H. ,test6,test7&#34;

现在在temp中的所有字符串中,替换&#39;&lt;&#;&#39; p&gt;&#39;&#39;和&#39;

  • &#34; Test1,test2,&#34;
  • &#34; p为H. test3,test4,test5,&#34;
  • &#34;,test6,test7&#34;

最后,使用&#39;,&#39;分割每一行。再次,
除了一些(易于移除的)空字符串,它应该工作

答案 2 :(得分:0)

这应该有用,它不是最优的,对不起,但不是我的头脑。

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++;
        }
    }
}