可以用什么字符来解析Java的段落?

can*_*eed 7 java

我相信人们会从这个人那里得到一个好笑,但对于我的生活,我找不到一个分隔符,它将指示一个新段落何时开始出现在一串文本中.字和行?容易腻,但段落似乎更难找到.我连续尝试了两个换行符,段落中断和换行符的Unicode表示,没有运气.

编辑:我为我原来问题的含糊不清道歉.要回答一些问题,它是最初在Windows上创建的基本文本文件.我正在测试一些代码,用于使用RIM eclipse插件使用Blackberry JDE 4.5打开和分析它的内容.虽然文件的来源是windows(至少在可预见的未来)并且是基本文本,但我无法控制它们是如何创建的(它是第三方来源,我不能访问它的创建方式)

Ste*_*n C 5

通常使用中没有这样的段落符号.

假设一行中有两个或多个换行符(带有可选的水平空格)表示段落中断,您可能会逃脱.但是这个"规则"有很多例外.例如,当一个段落

  • 被浮动的人物打断,或
  • 包含要点

然后继续...就像这个.对于那种事情,可能没有解决方案.

编辑 @Aiden的评论如下.(现在很明显,这与OP无关,但可能与通过Google等发现问题的其他人相关)

您可以考虑指定您的输入应该是(例如)Markdown语法,而不是尝试从文本中反向设计段落.即由StackOverflow支持.该降价维基包含指向降价解析器实现在许多语言,包括Java.

(这假设您可以控制要尝试解析为段落的文本的输入格式,等等.)


Ala*_*ore 5

纯文本文档中的段落通常由两个或多个行分隔符分隔。行分隔符可以是换行符 ( \n)、回车符 ( \r) 或回车符后跟换行符 ( \r\n)。这三种分隔符通常与操作系统相关,但任何应用程序都可以自由地使用任何类型的行分隔符写入文本。事实上,从不同来源(如网页)组装的文本很可能包含两种或多种分隔符。当您的应用程序读取文本时,无论它在什么平台上运行,它都应该始终检查所有三种行分隔符。

BufferedReader#readLine()这样做,但当然它一次只能读取一行。简单的散文通常会作为表示段落的非空行和表示段落之间空格的空行的交替序列返回。但不要指望它;注意多个空行,并注意“空”行实际上可能包含空格字符,例如空格 ( \u0020) 和 TAB ( \u0009)。

如果您选择不使用BufferedReader,您可能必须从头开始编写检测代码。Java ME 不包括正则表达式支持,因此split()java.util.Scanner不可用;StringTokenizer 不区分单个分隔符和连续多个分隔符,除非您使用该returnDelims选项。然后它一次返回一个字符的分隔符,因此您仍然需要编写自己的代码来确定您正在查看哪种分隔符(如果有)。