java—保留html标记并将字符串的其余部分转换为ascii

jjhzyzn0  于 2021-07-12  发布在  Java
关注(0)|答案(0)|浏览(208)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

17小时前关门了。
改进这个问题
任务如下:
有一个动态字符串
字符串包含html标记和html之外的文本,例如。 <h1>Hello</h1> html标记以<开头,以>
标签有html、倒过来的单逗号和双逗号、斜杠、方括号、regex模式、样式表和
html标记应该保持在字符串中的原样
html标记外的文本将转换为ascii格式
最后,将打印更新的字符串
目前所做的工作:

public static void main(String[] args) {
        String str = 
                "<label> Password</label>"+
                "<div class=\"input-group\" id=\"show_hide_password\">";
        System.out.println(convert(str));
    }
static String convert(String str) {
        String regex = "(?<=>)([^<]*)(?=<)";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        if (matcher.find()) {
            String match = matcher.group();
            if (!match.isBlank()) {
                return str.replaceAll(regex,
                        " " + Arrays.stream(match.split(""))
                                .map(s -> !" ".equals(s) ? ("&#" + (int) Character.valueOf(s.charAt(0)) + ";") : " ")
                                .collect(Collectors.joining()) + " ");
            }
        }
    return str;
    }

上述代码的输出为:

<label>  &#80;&#97;&#115;&#115;&#119;&#111;&#114;&#100; </label> &#80;&#97;&#115;&#115;&#119;&#111;&#114;&#100; <div class="input-group" id="show_hide_password">

你可以看到它的印刷 Password 两次,即一次 <label> 标记,一旦超出此标记
我做了另一个测试如下:

String str = 
                "<select name=\"dept\" id=\"parent\" class=\"list_cf\"> \n"+
                "<option value=\"\"> --Departments--</option>\n"+
                "<option value=\"2\" class=\"2\"> Finance Department</option> \n"+
                "<option value=\"5\" class=\"5\"> Human Resource</option> \n"+
                "<option value=\"4\" class=\"4\"> Marketing & Bussiness Development</option> \n"+
                "<option value=\"6\" class=\"6\"> Operations Management</option> \n"+
                "<option value=\"3\" class=\"3\"> Sales Department</option> \n"+
                "<option value=\"1\" class=\"1\"> Technology Department</option> \n"+
                "</select> ";

这个字符串根本不会转换成ascii码,而是在控制台中按原样打印
我在努力保持双方之间的联系 <starting and ending HTML tags> 因为它是和改变文本是写在外面 <starting and ending HTML tags> 提前谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题