我在这里有一个模式,例如文件以一段文字开头,如“BeginText”,另一个像“EndText”,我需要文件内容在这两个文本/字符串中。我怎么能这样做java,文件内容部分与XML混合,所以我不能在这里使用XML / DOM Parser,因为它包含普通文本和XML。有一种方法可以用Java来实现。
我在这里考虑Java扫描仪。如果还有其他想法,那就太棒了。
答案 0 :(得分:2)
使用内置字符串方法的组合:“indexOf”和“subString”,方法如下:
//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();
}
这应该产生预期的结果。
答案 1 :(得分:1)
如何使用String.indexOf(String)
int start = s.indexOf("BeginText");
int end = s.indexOf("EndText");
String content = s.substring(start + "BeginText".length(), end);
其中s
是您的文件内容
你必须检查开始是否在结束之前,如果值不是-1
。
答案 2 :(得分:0)
使用java pattern matching和正则表达式来确定开始和结束字符的索引。有了这些,你就有了自己的内容。