gpt4 book ai didi

java - 替换除 HTML 标记中的空格之外的所有空格

转载 作者:行者123 更新时间:2023-11-29 07:47:33 25 4
gpt4 key购买 nike

我需要用 html 代码替换所有空格,即字符串中的  。目前正在执行替换,但它也会替换 html 标记中的空格,例如 <a href="http://google.com" /> .

string.replaceAll(" ", "&nbsp")

但我需要它不更改标签。

例子:

String s1 = "Hello!, Check out this <^a href=\"http://www.entrepreneur.com/article/234538\">10 Movies Every Entrepreneur Needs to Watch <^/a>"

替换后应该是这样的;

String s1 = "Hello!,&nbspCheck&nbspout&nbspthis&nbsp<^a href=\"http://www.entrepreneur.com/article/234538\">10&nbspMovies&nbspEvery&nbspEntrepreneur&nbspNeeds&nbspto&nbspWatch&nbsp<^/a>"

谁能建议一个更智能的正则表达式来完成任务?

最佳答案

我知道您已经接受了一个答案,但您的问题还有另一个未提及的简单解决方案。这种情况听起来与这个问题非常相似 "regex-match a pattern, excluding..."

关于使用正则表达式解析 html 的所有免责声明,这里是一个简单的方法。

我们可以用一个非常简单的正则表达式来解决它:

<[^<>]*>|( )

交替的左侧|匹配完成<tags> .我们将忽略这些匹配项。右侧将空格匹配并捕获到第 1 组,我们知道它们是正确的空格,因为它们与左侧的表达式不匹配。

这个完整的 Java 程序展示了如何使用正则表达式(请参阅 online demo 底部的结果):

import java.util.*;
import java.io.*;
import java.util.regex.*;
import java.util.List;

class Program {
public static void main (String[] args) throws java.lang.Exception {

String subject = "Hello!, Check out this <^a href=\"http://www.entrepreneur.com/article/234538\">10 Movies Every Entrepreneur Needs to Watch <^/a>";
Pattern regex = Pattern.compile("<[^<>]*>|( )");
Matcher m = regex.matcher(subject);
StringBuffer b= new StringBuffer();
while (m.find()) {
if(m.group(1) != null) m.appendReplacement(b, "&nbsp;");
else m.appendReplacement(b, m.group(0));
}
m.appendTail(b);
String replaced = b.toString();
System.out.println(replaced);
} // end main
} // end Program

引用

关于java - 替换除 HTML 标记中的空格之外的所有空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24256200/

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