我需要将HTML转换为纯文本.我对格式化的唯一要求是在纯文本中保留新行.新行不仅应显示在<br>
其他标签的情况下,例如<tr/>
,也应显示</p>
新行.
用于测试的示例HTML页面是:
请注意,这些只是随机网址.
我已经尝试了在这个StackOverflow问题的答案中提到的各种库(JSoup,Javax.swing,Apache utils)来将HTML转换为纯文本.
使用JSoup的示例:
public class JSoupTest {
@Test
public void SimpleParse() {
try {
Document doc = Jsoup.connect("http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter09/scannerConsole.html").get();
System.out.print(doc.text());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
HTMLEditorKit示例:
import javax.swing.text.html.*;
import javax.swing.text.html.parser.*;
public class Html2Text extends HTMLEditorKit.ParserCallback {
StringBuffer s;
public Html2Text() {}
public void parse(Reader in) throws IOException {
s = new StringBuffer();
ParserDelegator delegator = new ParserDelegator();
// the …
Run Code Online (Sandbox Code Playgroud) 给定任何可打印字符的任意文本文件,如何将其转换为完全相同的HTML(具有以下要求)?
<pre>
标签white-space
规则<p>
标签很好,但不是必需的(<br />
s和/或<div>
s很好)确切地保留了空白.
给定以下输入行(忽略错误的自动语法突出显示):
Line one
Line two, indented four spaces
Run Code Online (Sandbox Code Playgroud)
浏览器应该使输出完全相同,保持第二行的缩进以及"缩进"和"空格"之间的间隙.当然,我实际上并不是在寻找等宽输出,而且字体与算法/标记正交.
给定两行作为完整的输入文件,示例正确的输出将是:
Line one<br /> Line two,
indented four spaces
Run Code Online (Sandbox Code Playgroud)希望在浏览器中进行软包装.也就是说,即使输入行比其视口宽(假设单个单词仍然比所述视口缩小),生成的HTML也不应强制用户滚动.
我正在寻找完全定义的算法.在python或javascript中实现的加分点.
(请不要只回答我应该使用<pre>
标签或CSS white-space
规则,因为我的要求使这些选项无法使用.请不要发布未经测试和/或天真的建议,例如"用所有空格替换
."毕竟,我"从积极的角度来看,解决方案在技术上是可行的 - 这是一个有趣的问题,你不觉得吗?)
我正在开发一个涉及将大量HTML内容转换为普通/文本的项目.我有一个自定义编写的模块可以完成这项工作,但我想知道是否有一些标准工具可以帮助完成工作.
我正在发送纯文本电子邮件,并想知道如何为此添加换行符.它出现在同一条线上.
From: <%= @name %>
<%= @text %>
Run Code Online (Sandbox Code Playgroud)
谢谢
出于某种原因,我想通过PHP脚本提供我的robots.txt.我已经设置了apache,以便robots.txt文件请求(实际上所有文件请求)都来自单个PHP脚本.
我用来渲染robots.txt的代码是:
echo "User-agent: wget\n";
echo "Disallow: /\n";
Run Code Online (Sandbox Code Playgroud)
但是,它不处理换行符.如何正确地服务robots.txt,以便搜索引擎(或任何客户端)正确看到它?我是否必须为txt文件发送一些特殊标题?
现在我有以下代码:
header("Content-Type: text/plain");
echo "User-agent: wget\n";
echo "Disallow: /\n";
Run Code Online (Sandbox Code Playgroud)
它仍然不显示换行符(请参阅http://sarcastic-quotes.com/robots.txt).
有人提到它很好,没有在浏览器中显示.只是好奇这个如何正确显示:http://en.wikipedia.org/robots.txt
我通过wget下载了我的和维基百科,看到这个:
$ file en.wikipedia.org/robots.txt
en.wikipedia.org/robots.txt: UTF-8 Unicode English text
$ file sarcastic-quotes.com/robots.txt
sarcastic-quotes.com/robots.txt: ASCII text
Run Code Online (Sandbox Code Playgroud)
主要问题是我没有设置标题.但是,还有另一个内部错误,它将Content-Type设为html.(这是因为我的请求实际上是通过内部代理提供的,但这是另一个问题).
浏览器不显示换行符的一些注释只是半正确的 - >如果content-type是text/plain,现代浏览器会正确显示换行符.我选择的答案与真正的问题非常匹配,并且没有上述略有误导性的误解:).谢谢大家的帮助和时间!
谢谢
J.P
我正在抓取一些网站,并有ASCII文本,我想转换为纯文本存储在数据库中.比如我想要的
I have got to tell anyone who will listen that this is
one of THE best adventure movies I've ever seen.
It's almost impossible to convey how pumped I am
now that I've seen it.
Run Code Online (Sandbox Code Playgroud)
转换成
I have got to tell anyone who will listen that this is
one of THE best adventure movies I've ever seen. It's
almost impossible to convey how pumped I am now that
I've seen it.
Run Code Online (Sandbox Code Playgroud)
我用手指搜索血腥,有什么帮助吗?
我非常喜欢任何形式的语法高亮.但我遗漏了类似于纯文本文件的东西.想象一下,在缩进的行或行之前有不同的颜色,前面是特殊的字符.这样的事情已经存在吗?我特别欣赏Sublime Text的插件.
与大多数纯文本电子邮件相关的问题不同,我的问题是Rails发送的纯文本电子邮件中有太多换行符.
为了简单起见,我完全抛弃了HTML电子邮件,只使用纯文本电子邮件(使用.text.erb视图).我的问题发生在我在视图中有条件行的地方,因为我的视图文件中的新代码行会转移到电子邮件中.
例如:
Line 1
<%= "Line 2" if false %>
Line 3
Run Code Online (Sandbox Code Playgroud)
将呈现为:
Line 1
Line 3
Run Code Online (Sandbox Code Playgroud)
而不是预期的输出:
Line 1
Line 3
Run Code Online (Sandbox Code Playgroud)
我目前的黑客是使用以下内容:
Line 1
<%= "Line 2\n" if false %>Line 3
Run Code Online (Sandbox Code Playgroud)
当连续存在多个条件时,这可能变得非常混乱.
当然必须有更好的方法!
我想将从某个文档(pdf,docx,html)中选择的文本粘贴到一个contenteditable类型的div中.
现在我想在渲染之前删除剪贴板文本的所有格式.因此,粘贴的最终内容应该是纯文本.
此方案的类似物可以将内容粘贴到Windows记事本中.
如何使用AngularJs完成此操作.或者存在任何其他javascript库来实现这一点.
更新: 我可以使用以下代码将剪贴板作为文本.
editor.addEventListener("paste", function(e) {
// cancel paste
e.preventDefault();
// get text representation of clipboard
var text = e.clipboardData.getData("text/plain");
// insert text manually
document.execCommand("insertHTML", false, text);
});
Run Code Online (Sandbox Code Playgroud)
但我不知道如何以及在何处在AngularJs中添加此代码.
我正在尝试plain text
使用Thymeleaf从Spring应用程序发送电子邮件.
这是我的电子邮件服务:
@Override
public void sendPasswordToken(Token token) throws ServiceException {
Assert.notNull(token);
try {
Locale locale = Locale.getDefault();
final Context ctx = new Context(locale);
ctx.setVariable("url", url(token));
// Prepare message using a Spring helper
final MimeMessage mimeMessage = mailSender.createMimeMessage();
final MimeMessageHelper message = new MimeMessageHelper(
mimeMessage, false, SpringMailConfig.EMAIL_TEMPLATE_ENCODING
);
message.setSubject("Token");
message.setTo(token.getUser().getUsername());
final String content = this.textTemplateEngine.process("text/token", ctx);
message.setText(content, false);
mailSender.send(mimeMessage);
} catch (Exception e) {
throw new ServiceException("Token has not been sent", e);
}
}
Run Code Online (Sandbox Code Playgroud)
电子邮件被发送并发送到邮箱.
这是我的plain text …
plaintext ×10
html ×4
email ×2
javascript ×2
php ×2
python ×2
actionmailer ×1
algorithm ×1
angularjs ×1
ascii ×1
header ×1
java ×1
jsoup ×1
parsing ×1
robots.txt ×1
spring ×1
sublimetext2 ×1
text ×1
thymeleaf ×1