Java 仅将包含整数和字符串的文件拆分为字符串

Java 仅将包含整数和字符串的文件拆分为字符串,java,string,delimiter,trie,Java,String,Delimiter,Trie,我有一个文件,它的数据存储为“整数->\t(tab)->字符串->两个空格->” 我做错了吗 我正在做的是 Trie t = new Trie(); BufferedReader bReader = new BufferedReader(new FileReader( "H:\\100kfound.txt")); String line; String[] s = null; while ((line = bReader.read

我有一个文件,它的数据存储为“整数->\t(tab)->字符串->两个空格->”

我做错了吗

我正在做的是

    Trie t = new Trie();
    BufferedReader bReader = new BufferedReader(new FileReader(
            "H:\\100kfound.txt"));

    String line;
    String[] s = null;
    while ((line = bReader.readLine()) != null) {

        s = line.split("\t");

    }
    int i;
    for (i = 0; i < s.length; i++) {
        System.out.println(s[i]);
        if (!(s[i].matches("\\d+"))) {

            t.addWord(s[i]);
            System.out.println(s[i]);
        }
    }
Trie t=new Trie();
BufferedReader bReader=新BufferedReader(新文件读取器(
“H:\\100kfound.txt”);
弦线;
字符串[]s=null;
而((line=bReader.readLine())!=null){
s=行分割(“\t”);
}
int i;
对于(i=0;i

我可以通过调试看到,它在while循环中运行正常,但在for循环中,它只存储两个字符串并打印相同的字符串。

您可能需要为表达式添加一个^[0-9]+$,这样您就可以得到完整的整数。如果没有“^”和“$”,则可以匹配其他字符,如tt55gh所匹配的字符

if (!(s[i].matches("^[0-9]+$"))) {
}
根据上面的注释,您需要将for循环移动到while循环中

while ((line = bReader.readLine()) != null) {

    s = line.split("\t");

    for (int i = 0; i < s.length; i++) {
        System.out.println("Value "+i+": "+s[i]);
        if (!(s[i].matches("^[0-9]+$"))) {
            t.addWord(s[i]);
            System.out.println("Integer "+i+": "+s[i]);
        }
    }
}
while((line=bReader.readLine())!=null){
s=行分割(“\t”);
对于(int i=0;i
你知道除了最后一行代码之外,你把所有的行都扔掉了吗?乔,别放心。我有超过10000个字符串的大文件。它会影响它吗。?