Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java:计算开始和结束标记对_Java - Fatal编程技术网

java:计算开始和结束标记对

java:计算开始和结束标记对,java,Java,我有下面的文字 `h1` text `/h1` `i` text `/i` `u` text `/u` 这里成对的h1/h1,i/i,u/u完美存在,因此应该传递此文本。现在看这篇课文 `h1` text `/h1` `i` text `/i` `u` text `/u 此处缺少u/u组合。因此,上面的文本失败了 我试过这个 String startTags[] = {"`b`","`h1`"

我有下面的文字

`h1` text  `/h1`        `i` text  `/i`            `u` text  `/u`  
这里成对的
h1
/h1
i
/i
u
/u
完美存在,因此应该传递此文本。现在看这篇课文

`h1` text  `/h1`        `i` text  `/i`            `u` text  `/u  
此处缺少
u
/u
组合。因此,上面的文本失败了

我试过这个

    String startTags[] = {"`b`","`h1`","`h2`","`h3`","`h4`","`h5`","`h6`","`ul`","`li`","`i`","`u`"};
    String endTags[] = {"`/b`","`/h1`","`/h2`","`/h3`","`/h4`","`/h5`","`/h6`","`/ul`","`/li`","`/i`","`/u`"};

        for(int i=0;i<startTags.length;i++){
            if(str.indexOf(startTags[i])!=-1){
                System.out.println(">>>>"+startTags[i]);
                startTagCount++;
            }
            if(str.indexOf(endTags[i])!=-1){System.out.println("+++"+endTags[i]);
                endTagCount++;
            }                
        }

if(startTagCount==endTagCount){
 //TEXT IS OK
}else{
 // TEXT FAILED
}

java中有更好的解决方案或正则表达式吗?

我担心(严格的)正则表达式无法解决这个问题,因为您描述的语言不是a,它扩展了语言{anbn},这是一种众所周知的非正则语言。

如果您关心的只是确保所有的开始标记都有匹配的结束标记,然后可以使用正则表达式

您的代码有一个逻辑问题,即您计算所有开始标记和所有结束标记,但不检查开始标记和结束标记是否实际匹配。startTagCount和endTagCount变量不足。我建议使用映射,使用标记类型作为键,使用值作为计数。打开标记的递增计数,关闭标记的递减计数。扫描完成后检查是否为非零

这种“语言”的语法是什么?您的方法可能不是正确的验证。例如,此HTML具有匹配的标记计数,但无效:

<b><i>Invalid</b></i>
无效
<b><i>Invalid</b></i>