如何将HTML转换为纯文本格式Text

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将HTML转换为纯文本格式Text相关的知识,希望对你有一定的参考价值。

方法一:
通过在原数据前加一个字母使数据变成文本,再将字母替换成半角的单引号,所得数据就是文本型数据了。
例:将A列所有数据转换成文本,操作步骤如下:
1、在表格的空白列写下如下公式:
=”a”&
A1
将此公式往下复制,使得这一列得出的结果为A列数据的首位字符前加了一个字母a;
2、复制该列所有数据后,使用“选择性粘贴”只粘贴数值;
3、覆盖需转换的数据,再删除写了公式的列,使需转换的数据均为首位字符前加了字母
a的文本。
4、选择所有需转换的数据,通过“查找——替换”,将所有字母a,替换成半角的单引号“’”(必须是半角字符,而不能是标点符号),即可。
方法二:使用TEXT函数转换。
TEXT函数可将数值转换为文本,并可使用户通过使用特殊格式字符串来指定显示格式。
需要以可读性更高的格式显示数字或需要合并数字、文本或符号时,此函数很有用。
该函数的语法为:TEXT(value,
format_text)
Value为需转换的数值,format_text为需转换的格式,如果format_text参数为0或#,则显示的格式不变,如转换后的文本格式有其他要求,可以参照EXCEL中帮助文件的介绍。
举例:假设单元格A1含有数字23.5。
若转换后的文本数据也是23.5,则公式为:=TEXT(A1,0)
或=TEXT(A1,"#")
要将数字格式设置为美元金额,可以使用以下公式:
=TEXT(A1,"$0.00")
计算结果将显示为$23.50。
参考技术A 背景:excel2007,对于日期类型字段具有自动统计功能,若字段为text类型(其它数据库导出后的格式),则需要变为date类型。
方法:
假设文本text列为a,则设列b格式为“常规”,后在b1输入“=datavalue(a1)",会得到日期的序列数值,复制b1,在c1选择性粘贴,选择数值,调整c1的格式为日期,搞定。

如何将 HTML 文本转换为纯文本? [复制]

【中文标题】如何将 HTML 文本转换为纯文本? [复制]【英文标题】:how to convert HTML text to plain text? [duplicate] 【发布时间】:2011-04-06 04:43:49 【问题描述】:

朋友的 我必须从url解析描述,其中解析的内容很少有html标签,所以我怎样才能将它转换为纯文本。

【问题讨论】:

您的具体要求是什么?您需要去除 HTML 标签吗?提取特定标签的内容? 我可以提取内容,但内容有

zcc dsdfsf ddfdfsf

sfdfdfdfdf,就像上面我正在获取我的数据但我需要是一个简单的纯文本。没有那些 html 标签
类似的问题在这里有很好的答案:***.com/questions/1518675/…。我使用了 Jericho,效果很好。 您应该将此问题标记为已回答。 ***.com/q/240546/873282、***.com/q/1699313/873282、***.com/q/1518675/873282 和 ***.com/q/832620/873282 的副本 【参考方案1】:

是的,Jsoup 将是更好的选择。只需执行以下操作即可将整个 HTML 文本转换为纯文本。

String plainText= Jsoup.parse(yout_html_text).text();

【讨论】:

为了保留换行符,您现在还可以使用Jsoup.parse(html).wholeText()【参考方案2】:

去掉 HTML 标签很简单:

// replace all occurrences of one or more HTML tags with optional
// whitespace inbetween with a single space character 
String strippedText = htmlText.replaceAll("(?s)<[^>]*>(\\s*<[^>]*>)*", " ");

但不幸的是,要求从来没有那么简单:

通常,&lt;p&gt;&lt;div&gt; 元素需要单独处理,可能有带有 &gt; 字符(例如 javascript)的 cdata 块会弄乱正则表达式等。

【讨论】:

了解为什么这不适用于一般情况,并且不会是 f(u|oo)l-proof:RegEx match open tags except XHTML self-contained tags 爱它...如此简单,却如此强大【参考方案3】:

您可以使用这一行来删除 html 标记并将其显示为纯文本。

htmlString=htmlString.replaceAll("\\<.*?\\>", "");

【讨论】:

【参考方案4】:

使用像htmlCleaner这样的HTML解析器

详细解答:How to remove HTML tag in Java

【讨论】:

【参考方案5】:

使用 Jsoup。

添加依赖

<dependency>
  <!-- jsoup HTML parser library @ https://jsoup.org/ -->
  <groupId>org.jsoup</groupId>
  <artifactId>jsoup</artifactId>
  <version>1.13.1</version>
</dependency>

现在在您的 java 代码中:

public static String html2text(String html) 
        return Jsoup.parse(html).wholeText();
    

只需调用方法 html2text 并传递 html 文本,它将返回纯文本。

【讨论】:

【参考方案6】:

我建议通过 jTidy 解析原始 HTML,它应该会为您提供可以编写 xpath 表达式的输出。这是我发现的最可靠的 HTML 抓取方式。

【讨论】:

【参考方案7】:

如果你想像浏览器显示一样解析,使用:

import net.htmlparser.jericho.*;
import java.util.*;
import java.io.*;
import java.net.*;

public class RenderToText 
    public static void main(String[] args) throws Exception 
        String sourceUrlString="data/test.html";
        if (args.length==0)
          System.err.println("Using default argument of \""+sourceUrlString+'"');
        else
            sourceUrlString=args[0];
        if (sourceUrlString.indexOf(':')==-1) sourceUrlString="file:"+sourceUrlString;
        Source source=new Source(new URL(sourceUrlString));
        String renderedText=source.getRenderer().toString();
        System.out.println("\nSimple rendering of the HTML document:\n");
        System.out.println(renderedText);
  

我希望这也有助于以浏览器格式解析表格。

谢谢, 象头神

【讨论】:

投反对票的人能否解释一下他们投反对票的原因?【参考方案8】:

我需要包含 FreeMarker 标签的一些 HTML 的纯文本表示。问题是通过 JSoup 解决方案交给我的,但 JSoup 正在转义 FreeMarker 标记,从而破坏了功能。我还尝试了 htmlCleaner (sourceforge),但留下了 HTML 标题和样式内容(已删除标签)。 http://***.com/questions/1518675/open-source-java-library-for-html-to-text-conversion/1519726#1519726

我的代码:

return new net.htmlparser.jericho.Source(html).getRenderer().setMaxLineLength(Integer.MAX_VALUE).setNewLine(null).toString();

maxLineLength 确保不会人为地将行换行为 80 个字符。 setNewLine(null) 使用与源相同的换行符。

【讨论】:

【参考方案9】:

我使用HTMLUtil.textFromHTML(value) 来自

<dependency>
    <groupId>org.clapper</groupId>
    <artifactId>javautil</artifactId>
    <version>3.2.0</version>
</dependency>

【讨论】:

【参考方案10】:

使用 Jsoup,我得到了同一行中的所有文本。

所以我使用以下代码块来解析 HTML 并保留新行:

private String parseHTMLContent(String toString) 
    String result = toString.replaceAll("\\<.*?\\>", "\n");
    String previousResult = "";
    while(!previousResult.equals(result))
        previousResult = result;
        result = result.replaceAll("\n\n","\n");
    
    return result;

不是最好的解决方案,但解决了我的问题:)

【讨论】:

以上是关于如何将HTML转换为纯文本格式Text的主要内容,如果未能解决你的问题,请参考以下文章

将 HTML 代码转换为纯文本,格式可用于文本文件 [重复]

从 Norand PL\N 格式转换为纯文本

C# 中的 HTML 到文本电子邮件转换器

如何使用 Ajax 将 Summernote 文本从 JSON 数据转换为纯文本?

C#中如何判断输入的文本为纯数字

将 HTML 项目符号转换为纯文本