gpt4 book ai didi

java - 保持 html、css、javascript 或任何 不变,其余部分转换为 ASCII 字符

转载 作者:行者123 更新时间:2023-12-04 01:05:51 25 4
gpt4 key购买 nike

我想保留 HTML、CSS、JS 或其他任何内容,并且将括号外的文本转换为 ASCII 字符。

例如寻找:<b>Hello World</b>
所需的输出是:<b> &#72;&#101;&#108;&#108;&#111; &#87;&#111;&#114;&#108;&#100; </b>

到目前为止我实验的是:我用 java 代码应用了 ASCII 字符,例如:str.replace("H", "&#72;")但肯定它正在改变内部和外部标签:

&#60;&#98;&#62;     &#72;&#101;&#108;&#108;&#111; &#87;&#111;&#114;&#108;&#100; &#60;/&#98;&#62;

它只打印<b>Hello World</b>而不是作为 html 代码应用。

我正在寻找解决方案,以保持 html、css、javascript 或任何内容不变,其余部分转换为 ASCII 字符

请注意:Hello World 是动态值

最佳答案

您可以使用 regex , (?<=>)([^<]*)(?=<)查找 HTML 标记之间的文本。提取文本后,您可以将其拆分为每个字符,然后将每个字符转换为 int以获得其 ASCII 值。

import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

public class Main {
public static void main(String[] args) {
String str = "<b>Hello World</b>";
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;
}
}

输出:

<b> &#72;&#101;&#108;&#108;&#111; &#87;&#111;&#114;&#108;&#100; </b>

regex101.com 对正则表达式的解释:

enter image description here

关于java - 保持 html、css、javascript 或任何 <between-these-brackets> 不变,其余部分转换为 ASCII 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66508260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com