我在这里有一个模式,例如文件以“BeginText”之类的一段文本开头,并有另一个“EndText”之类的文本,我需要这两个文本/字符串中的文件内容。我如何在java中做到这一点,文件内容部分与 XML 混合,所以我不能在这里使用 XML/DOM 解析器,因为它包含普通文本和 XML。有没有办法在 Java 中做到这一点。
我在这里考虑使用 Java 扫描器。如果有其他想法,那就太好了。
通过以下方式使用内置字符串方法的组合:“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();
}
这应该会产生预期的结果。
如何使用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
。
使用 java模式匹配和正则表达式来确定开始和结束字符的索引。一旦你有了这些,你就有了你的内容。