从数千行中提取数据

时间:2012-10-13 08:51:23

标签: java

我有一个.obj文件,到目前为止我一直使用凌乱的标记器来分割线条。我发现这真的很低效。

public static String getSpecificToken(String s, int t) {
    Scanner tokens = new Scanner(s);
    String token = "";

    for (int i = 0; i < t; i++) {
        if(!tokens.hasNext()) { break; }
        token = tokens.next();
    }

    tokens.close();
    return token;
}

目标文件格式看起来像这样,我很难找到最有效的方法来分割它。

  

v 1.4870 0.3736 2.2576

     

v 1.5803 0.3451 2.1859

     

v 1.6275 0.3111 2.2261

     

v 1.6343 0.0783 2.4352

     

v 1.5180 0.0644 2.5398

     

v 1.4568 0.0720 2.5205

     

v 1.3953 0.0795 2.5013

2 个答案:

答案 0 :(得分:3)

只需在空格中使用String#split split,无需在此使用Tokenizer。实际上,您应该尽量避免使用Tokenizer: -

Scanner tokens = new Scanner(s);
String[] tokenArr = tokens.split("\\s+");  // Split on 1 or more space

for (String token: tokenArr) {
    System.out.println(token);
}

答案 1 :(得分:3)

examplejava.util.Scannerjava.io.StreamTokenizer进行比较,表明后者略有优势。您可能可以使用类似的方法profile您的用例。