2010-09-09 62 views
1

我有以下格式文本:Java的文本分析幫助

節名1:

本文進入 第一部分

節名2:

本文 進入第二部分

等,

其中部分名稱是任意短語,部分內容將包含除部分名稱以外的自由文本。我需要將此文本拆分爲對象類型(節名稱,節文本)。

是否有有效的RegEx或其他推薦的方法?

謝謝。 -Raj

+1

當談到解析它要儘可能具體,是非常重要的。你需要區分段落名稱和文本......那麼它是什麼使它成爲appart?空白?行末的冒號?如果你想解析它,必須有一個特定的標準。這是允許的文字 – Arne 2010-09-09 06:26:39

+0

「這是文字:」? – Arne 2010-09-09 06:27:14

+0

Arne,謝謝你的迴應。你的問題讓我明白,不要再尋找一個銀色的子彈正則表達式,並使我的部分文本更加區分和解析。 – Raj 2010-09-10 18:33:59

回答

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; 
    } 
} 
0

您需要一個結構或一個固定的,可識別的分隔符來決定一行是否包含段名或段體。

如果您有一條規則說:以冒號結尾的文本行是段​​名稱,那麼您應該逐行讀取文檔,查找一行中的最後一個字符並將行(1)作爲部門主管,如果其最後的字符是冒號或(2)否則作爲部分主體的一部分。