1

我在这里有一个模式,例如文件以“BeginText”之类的一段文本开头,并有另一个“EndText”之类的文本,我需要这两个文本/字符串中的文件内容。我如何在java中做到这一点,文件内容部分与 XML 混合,所以我不能在这里使用 XML/DOM 解析器,因为它包含普通文本和 XML。有没有办法在 Java 中做到这一点。

我在这里考虑使用 Java 扫描器。如果有其他想法,那就太好了。

4

3 回答 3

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();
}

这应该会产生预期的结果。

于 2013-03-06T13:25:31.087 回答
1

如何使用String.indexOf(String)

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

s你的文件内容在哪里

您必须检查 start 是否在 end 之前以及两个值是否都不是-1

于 2013-03-06T13:16:56.070 回答
0

使用 java模式匹配和正则表达式来确定开始和结束字符的索引。一旦你有了这些,你就有了你的内容。

于 2013-03-06T13:18:10.697 回答