2013-03-06 67 views
1

我在這裏有一個模式,例如文件以「BeginText」之類的文本開頭,並有另一個像「EndText」,我需要在這兩個文本/ strings.How內的文件內容我可以在java中做到這一點,文件內容部分與XML混合在一起,所以我不能在這裏使用XML/DOM解析器,因爲它包含普通文本和XML.Is有一種方法可以在Java中執行此操作。使用Java分離文件內容

我正在考慮這裏的Java掃描儀。如果有任何其他想法,它會很棒。

回答

2

使用內置的組合,字符串方法

//read file to string using our utility method 
String text = readFileContents("pathToTargetFile"); 

//find start index 
int startIndex = text.indexOf("BeginText"); 

//find end index from start index. 
int endIndex = text.indexOf("EndText",startIndex); 

//grab the sub string of the text between these two values. 
String targetText = text.subString(startIndex,endIndex); 





//private utility method, reads file contents and returns as a string 
private String readFileContents(String filePath){ 

BufferedReader reader = new BufferedReader(new FileReader (new File(filePath))); 
String   line = null; 
StringBuilder stringBuilder = new StringBuilder(); 
String   ls = System.getProperty("line.separator"); 

while((line = reader.readLine()) != null) { 
    stringBuilder.append(line); 
    stringBuilder.append(ls); 
} 

return stringBuilder.toString(); 
} 

這應該產生預期的結果。

+0

+1這個想法。不要把整個文件視爲一個單獨的字符串,這將使我的一天。無論如何,我可以包含這個邏輯的多個實例,因爲有多個地方我需要分開文件使用開始索引和結束索引,我不知道會有多少個實例,並減少了使用循環的想法。 – Madusudanan 2013-03-07 05:48:17

1

怎麼樣使用String.indexOf(String)

int start = s.indexOf("BeginText"); 
int end = s.indexOf("EndText"); 
String content = s.substring(start + "BeginText".length(), end); 

其中s是你的文件內容

你就必須檢查是否開始爲年底前,如果博特值不-1

+0

所以你告訴我把整個文件當作單個字符串處理? – Madusudanan 2013-03-06 13:21:55

+0

感謝您的想法。 – Madusudanan 2013-03-07 05:48:46

0

使用java pattern matching和正則表達式來確定開始和結束字符的索引。一旦你有這些,你有你的內容。通過以下方式「的indexOf」和「串」: