我想知道如何从android中的文本文件中提取子字符串:
文本文件如下所示:
[start_delimeter]
0|1|text1
0|1|text2
0|1|text3
0|1|text4
[end_delimiter]
我想在start_delimeter和end_delimiter之间提取字符串。
我怎样才能在java语言/ android中做到这一点?
答案 0 :(得分:3)
filename.txt
)BufferedReader
)直到您阅读开始分隔符Pattern
和Matcher
处理它,直到找到结束分隔符(或使用String.split("|")
) // first get the file from the assets
InputStream is = context.getAssets().open("filename.txt");
try {
// start reading (line by line)
BufferedReader r = new BufferedReader(new InputStreamReader(is));
// wait for the start delimiter
String line;
while ((line = r.readLine()) != null)
if (line.equals("[start_delimiter]"))
break;
// this is the pattern for the data "int|int|String":
Pattern p = Pattern.compile("\\|(\\d+)\\|(\\d+)\\|(.+)");
// read it line by line...
while ((line = r.readLine()) != null) {
// ... till the end comes (end delimiter)
if (line.equals("[end_delimiter]"))
break; //done
// if the data matches the pattern...
Matcher m = p.matcher(line);
if (m.matches()) {
// ... handle it!
int first = Integer.parseInt(m.group(1));
int second = Integer.parseInt(m.group(2));
String text = m.group(3);
//...
}
}
} finally {
is.close();
}
答案 1 :(得分:1)
我想在start_delimeter和end_delimiter之间提取字符串。
我怎样才能在java语言/ android中做到这一点?
逐行读取文件到String中。 然后
str.subString(startIndex,endIndex);
答案 2 :(得分:0)
简单地说,我会用BufferedReader逐行读取文件。找到起始分隔符后,评估每个后续行以查看它是否为结束分隔符。如果它不是分隔符,则将字符串写入集合。到达结束分隔符后,停止阅读并关闭阅读器。
答案 3 :(得分:0)
使用BufferedReader
并逐行阅读文件。
BufferedReader r = ...;
//drop until we hit the delimiter
while (!r.readLine().equals("[start_delimeter]"));
String line;
while (!(line=r.readLine()).equals("[end_delimiter]")) {
//do something with "line" here
}