节名称/内容文本需要Java文本解析帮助
我有以下格式的文本: 章节名称1: 这篇课文进入了第二部分 第一节 章节名称2: 本文 进入第二部分 等等, 其中节名为任意短语,节内容将包含除节名以外的自由文本。我需要将此文本拆分为类型的对象对(节名称,节文本) 有没有一种有效的正则表达式或其他推荐的方法 谢谢。节名称/内容文本需要Java文本解析帮助,java,regex,parsing,Java,Regex,Parsing,我有以下格式的文本: 章节名称1: 这篇课文进入了第二部分 第一节 章节名称2: 本文 进入第二部分 等等, 其中节名为任意短语,节内容将包含除节名以外的自由文本。我需要将此文本拆分为类型的对象对(节名称,节文本) 有没有一种有效的正则表达式或其他推荐的方法 谢谢。 -Raj您需要一个结构或一个固定的、可识别的分隔符来决定一行是包含节名还是节体 如果您有这样一条规则:以冒号结尾的文本行是节名,那么您应该逐行阅读文档,查找行中的最后一个字符,并将行(1)视为节头(如果其最后一个字符是冒号),或者(
-Raj您需要一个结构或一个固定的、可识别的分隔符来决定一行是包含节名还是节体
如果您有这样一条规则:以冒号结尾的文本行是节名,那么您应该逐行阅读文档,查找行中的最后一个字符,并将行(1)视为节头(如果其最后一个字符是冒号),或者(2)视为节体的一部分(否则)。这取决于文档的结构。例如,每个部分是否都有空行?如果是这样的话,只需逐行扫描,并以这种方式构造对象,就很容易了
List<Section> sections = new ArrayList<Section>();
String temp = null;
String line = null;
int lineNumber = 0;
while ((line = br.readLine()) != null) {
lineNumber++;
if (lineNumber % 2 == 0) {
// Section Text
sections.add(new Section(temp, line);
}
else {
// Section Name
temp = line;
}
}
当涉及到解析时,尽可能具体是很重要的。您需要将节名称与文本区分开来。。。那么,是什么让这件事发生的呢?空白?行末尾的冒号?如果要解析它,必须有一个特定的标准。这是允许的短信吗?谢谢回复。你的问题让我有了灵感,不再寻找银弹正则表达式,而是让我的部分文本更容易区分和解析。
public class Section {
private final String name;
private final String text;
public Section(String name, String text) {
this.name = name;
this.text = text;
}
}