1

我有一个 .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

4

2 回答 2

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);
}
于 2012-10-13T08:52:55.650 回答
3

示例java.util.Scanner与进行比较java.io.StreamTokenizer,表明后者略有优势。您也许可以使用类似的方法来分析您的用例。

于 2012-10-13T09:10:03.957 回答