📄 html-html2.html
字号:
<html><head><title>Code Fragment</title></head><body text=#000000><center></center><br><br><dl><dd><pre> <font color = #ff0080>/** Test if stripped tag1 matches closing tag2 (first character is '/'). */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>static</font> <font color=#8000a0><font color=#8000a0>boolean</font> </font><font color=#0000ff>areMatchingTags</font>(<font color=#8000a0>String</font> tag1, <font color=#8000a0><font color=#8000a0>String</font> </font>tag2) { <font color=#8000a0><font color=#ff8000>return</font> </font>tag1.<font color=#0000ff>equals</font>(tag2.<font color=#0000ff>substring</font>(1)); <font color=#ff0080>// test against name after '/'</font> } <font color = #ff0080>/** Test if every opening tag has a matching closing tag. */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>static</font> <font color=#8000a0><font color=#8000a0>boolean</font> </font><font color=#0000ff>isHTMLMatched</font>(<font color=#8000a0>String</font>[] tag) { Stack<<font color=#8000a0>String</font>> S = <font color=#8000a0><font color=#ff8000>new</font> </font>NodeStack<<font color=#8000a0>String</font>><font color=#0000ff></font>(); <font color=#ff0080>// Stack for matching tags</font> <font color=#ff8000>for</font><font color=#0000ff> </font>(<font color=#8000a0>int</font> i = 0;<font color=#0000ff> </font>(i < tag.length) &&<font color=#0000ff> </font>(tag[i] != null); i++) { <font color=#ff8000>if</font><font color=#0000ff> </font>(<font color=#0000ff>isOpeningTag</font>(tag[i])) S.<font color=#0000ff>push</font>(tag[i]); <font color=#ff0080>// opening tag; push it on the stack</font> <font color=#ff8000>else</font> { <font color=#ff8000>if</font><font color=#0000ff> </font>(S.<font color=#0000ff>isEmpty</font>()) <font color=#8000a0><font color=#ff8000>return</font> </font>false; <font color=#ff0080>// nothing to match</font> <font color=#ff8000>if</font><font color=#0000ff> </font>(!<font color=#0000ff>areMatchingTags</font>(S.<font color=#0000ff>pop</font>(), tag[i])) <font color=#8000a0><font color=#ff8000>return</font> </font>false; <font color=#ff0080>// wrong match</font> } } <font color=#ff8000>if</font><font color=#0000ff> </font>(S.<font color=#0000ff>isEmpty</font>()) <font color=#8000a0><font color=#ff8000>return</font> </font>true; <font color=#ff0080>// we matched everything</font> <font color=#8000a0><font color=#ff8000>return</font> </font>false; <font color=#ff0080>// we have some tags that never were matched</font> } <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>final</font> <font color=#8000a0><font color=#8000a0>static</font> </font><font color=#8000a0>int</font> CAPACITY = 1000; <font color=#ff0080>// Tag array size</font> <font color = #ff0080>/* Parse an HTML document into an array of html tags */</font> <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>static</font> <font color=#8000a0>String</font>[] <font color=#0000ff>parseHTML</font>(Scanner s) { <font color=#8000a0>String</font>[] tag = <font color=#8000a0><font color=#ff8000>new</font> </font><font color=#8000a0>String</font>[CAPACITY]; <font color=#ff0080>// our tag array (initially all null)</font> <font color=#8000a0><font color=#8000a0>int</font> </font>count = 0; <font color=#ff0080>// tag counter</font> <font color=#8000a0><font color=#8000a0>String</font> </font>token; <font color=#ff0080>// token returned by the scanner s</font> <font color=#ff8000>while</font><font color=#0000ff> </font>(s.<font color=#0000ff>hasNextLine</font>()) { <font color=#ff8000>while</font><font color=#0000ff> </font>(<font color=#0000ff></font>(token = s.<font color=#0000ff>findInLine</font>(<font color=#008000>"<[^>]*>"</font>)) != null) <font color=#ff0080>// find the next tag</font> tag[count++] = <font color=#0000ff>stripEnds</font>(token); <font color=#ff0080>// strip the ends off this tag</font> s.<font color=#0000ff>nextLine</font>(); <font color=#ff0080>// go to the next line </font> } <font color=#8000a0><font color=#ff8000>return</font> </font>tag; <font color=#ff0080>// our array of (stripped) tags </font> } <font color=#8000a0><font color=#8000a0>public</font> </font><font color=#8000a0>static</font> <font color=#8000a0><font color=#8000a0>void</font> </font><font color=#0000ff>main</font>(<font color=#8000a0>String</font>[] args) <font color=#8000a0><font color=#ff8000>throws</font> </font>IOException { <font color=#ff0080>// tester</font> <font color=#ff8000>if</font><font color=#0000ff> </font>(<font color=#0000ff>isHTMLMatched</font>(<font color=#0000ff>parseHTML</font>(<font color=#ff8000>new</font> <font color=#0000ff>Scanner</font>(System.in)))) System.out.<font color=#0000ff>println</font>(<font color=#008000>"The input file is a matched HTML document."</font>); <font color=#ff8000>else</font> System.out.<font color=#0000ff>println</font>(<font color=#008000>"The input file is not a matched HTML document."</font>); }}</dl></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -