C#配对HTML标记以检查它们是否正确平衡
谢谢下面的提示 •当你点击一个<你知道你已经点击了一个标记,所以存储这个字符的位置时,你需要一次通过字符串一个字符(对于循环或while循环) •继续(最好是在子循环中)直到你碰到一个>,这是你的终点标记 •现在检查>前面的字符。是/吗 •是:查看堆栈顶部。这个字符串与C#配对HTML标记以检查它们是否正确平衡,c#,visual-studio-2017,C#,Visual Studio 2017,谢谢下面的提示 •当你点击一个,这是你的终点标记 •现在检查>前面的字符。是/吗 •是:查看堆栈顶部。这个字符串与之间的字符串相同吗 如果是,则弹出该项并跳出子循环(找到匹配项!) 如果否,则从方法返回false-您的工作已完成(HTML无效) •否:然后将之间的整个字符串推到堆栈上,并脱离此子循环,继续主循环。 正如@seesharper所建议的,将上面的代码转换为psuedocode,然后再转换为C。 祝您在学习编程的过程中好运 以下是我对问题的分析(我不会给你问题的代码解决方案,因为其他人
祝您在学习编程的过程中好运 以下是我对问题的分析(我不会给你问题的代码解决方案,因为其他人已经指出,这违背了这类练习的目的)。我也没有处理格式不一致(但仍然有效)的HTML和打开-关闭标记特殊情况,例如
,它们在真实HTML中很常见:
- 每次需要遍历字符串一个字符(
loop) 或者for
当
,这就是 你的终点标记循环时)当你点击一个
- 现在检查
前面的字符。是不是/
- 是:在堆栈顶部查看。该字符串与
之间的字符串相同吗- 如果是,则弹出该项并跳出子循环(您发现 匹配
- 如果否,则从方法返回false-您的工作已完成 (HTML无效)
- 否:然后将
之间的整个字符串推到堆栈上并 跳出这个子循环,继续主循环
祝您在学习编程的过程中好运 当前代码只是检查“{open}”是否完整,以及下一个标记是否也完整,而不是它是否与其close标记配对 您需要使用字符串而不是字符进行操作。你要读“{open}”和“{/open}”,你需要对它们进行操作 首先列出您的用例:
另外,我使用了错误的大括号,因为没有显示标签,这是一个快速编辑。您应该能够支持自动关闭标签吗?例如,
?此外,结束标记的格式类似于
,而不是
。您的代码与标记余额无关。您需要编写更复杂的代码来跟踪整个标记。此函数匹配开始<和结束>字符,而不匹配标记。您需要理解代码,而不仅仅是复制它。建议:写出你将如何手动完成这项任务,将这些指令转换成伪代码,最后转换成C#。提示:你的代码确实有用。使用堆栈是一个很好的方法,但不要匹配<和>,而是将开始标记与结束标记匹配。通过完成作业而不使用其他人的代码,您将了解更多信息(在约束范围内,您当然可以使用整个.NET库)。使用您不了解的第三方代码会导致灾难。我衷心祝愿您在努力提高编程技能的过程中好运!