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>