不必经过700-800行文本,而是每行都有以下几种变体:
-5,-8,0:2.0
我有一个方法我必须将每一行传递给anotherclass.setBlock(xCoord, yCoord, zCoord, id)
。所以对于上面的例子,它将是:
anotherclass.setBlock(x-5, y-8, 0, 2);
有没有办法解析每一行文字并执行此操作?我一直在寻找年龄,这要么是因为我找不到正确的方法来解决这个问题,要么根本找不到答案。
我尝试过手动操作,但在100行之后,它开始觉得效率很低。我不能真正使用for循环,因为坐标不是连续的(或者更确切地说,它们是,但只有1或2行)。
答案 0 :(得分:5)
import static java.lang.Double.parseDouble;
import static java.lang.Integer.parseInt;
import static java.util.regex.Pattern.compile;
...
public static void main(String[] args) {
BufferedReader r = null;
try {
r = new BufferedReader(new InputStreamReader(
new FileInputStream("myfile.txt"), "UTF-8"));
final Pattern p = compile("(.+?),(.+?),(.+?):(.+)");
String line;
while ((line = r.readLine()) != null) {
final Matcher m = p.matcher(line);
if (!m.matches())
throw new RuntimeException("Line in invalid format: " + line);
anotherclass.setBlock(parseInt(m.group(1)), parseInt(m.group(2)),
parseInt(m.group(3)), parseDouble(m.group(4)));
}
}
catch (IOException e) { throw new RuntimeException(e); }
finally { try { if (r != null) r.close(); } catch (IOEXception e) {} }
}