忧影Devil 2023-04-25 15:04 采纳率: 25%
浏览 29

用java实现对随机生成的前端标签排版

例如对这个字符串进行排版

<h1><h5><h3><h2></h2></h3></h5></h1><h1></h1><h1></h1><h1><h6></h6><h1></h1></h1>

  • 写回答

1条回答 默认 最新

  • 滚动的小薯条 2023-04-25 15:25
    关注

    直接看代码:

    import java.util.*;
    
    public class HTMLTagLayout {
        
        public static void main(String[] args) {
            String html = "<h1><h5><h3><h2></h2></h3></h5></h1><h1></h1><h1></h1><h1><h6></h6><h1></h1></h1>";
            Map<Integer, List<String>> tagMap = parseHTML(html);
            String output = formatTagMap(tagMap);
            System.out.println(output);
        }
        
        // 解析HTML字符串,返回一个按照标签级别分组的Map
        private static Map<Integer, List<String>> parseHTML(String html) {
            Map<Integer, List<String>> tagMap = new TreeMap<>();
            int level = 0;
            for (int i = 0; i < html.length(); i++) {
                char c = html.charAt(i);
                if (c == '<') {
                    if (html.charAt(i + 1) == '/') {
                        level--;
                    } else {
                        level++;
                    }
                    String tag = "";
                    while (i < html.length() && html.charAt(i) != '>') {
                        tag += html.charAt(i);
                        i++;
                    }
                    tag += '>';
                    List<String> tags = tagMap.getOrDefault(level, new ArrayList<>());
                    tags.add(tag);
                    tagMap.put(level, tags);
                }
            }
            return tagMap;
        }
        
        // 将按照标签级别分组的Map格式化输出
        private static String formatTagMap(Map<Integer, List<String>> tagMap) {
            StringBuilder sb = new StringBuilder();
            for (int level : tagMap.keySet()) {
                List<String> tags = tagMap.get(level);
                for (String tag : tags) {
                    sb.append("    ".repeat(level)).append(tag).append("\n");
                }
            }
            return sb.toString();
        }
    }
    
    
    

    输出结果为

    <h1>
        <h5>
            <h3>
                <h2></h2>
            </h3>
        </h5>
    </h1>
    <h1></h1>
    <h1></h1>
    <h1>
        <h6></h6>
        <h1></h1>
    </h1>
    
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 4月25日

悬赏问题

  • ¥30 模拟电路 logisim
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价