我的文字格式如下:
部分名称1:
这篇文章进入了 第一节
部分名称2:
本文 进入第二部分
等
其中部分名称是任意短语,部分内容将包含除部分名称以外的自由文本。我需要将此文本拆分为类型的对象对(部分名称,部分文本)。
是否有有效的RegEx或其他推荐方法?
感谢。 -Raj
答案 0 :(得分:0)
您需要一个结构或一个固定的,可识别的分隔符来决定一行是否包含一个部分名称或一个部分正文。
如果您有一条规则说:以冒号结尾的文本行是一个部分名称,那么您应该逐行阅读该文档,查找一行中的最后一个字符并处理line(1)作为节头,如果它的最后一个字符是冒号,或者(2)作为节主体的一部分,否则。
答案 1 :(得分:0)
这取决于文档的结构。例如,每个部分都有一个空行吗?如果是这样,那么只需逐行扫描就可以轻松完成,只需按照这种方式构建对象。
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;
}
}