假设我有一个我想读的 textfile.txt 。这是文件中的文字:
23:years:old
15:years:young
使用useDelimiter
方法,如何告诉我的程序:
和换行符是分隔符?将文本放在一行并使用useDelimter(":");
可以正常工作。问题是当我得到几行文字时。
Scanner input = new Scanner(new File("textfile.txt));
input.useDelimiter(:);
while(data.hasNextLine()) {
int age = input.nextInt();
String something = input.next();
String somethingelse = input.next();
}
使用此代码,我将收到inputMisMatch错误。
答案 0 :(得分:2)
尝试
scanner.useDelimiter("[:]+");
完整的代码是
Scanner scanner = new Scanner(new File("C:/temp/text.txt"));
scanner.useDelimiter("[:]+");
while (scanner.hasNext()) {
System.out.println(scanner.next());
}
输出
23
years
old
15
years
young
答案 1 :(得分:1)
使用此代码
Scanner input;
String tokenizer[];
try {
input = new Scanner(new File("D:\\textfile.txt"));
input.useDelimiter("\\n");
while(input.hasNextLine()) {
tokenizer = input.next().split(":");
System.out.println(tokenizer[0]+" |"+tokenizer[1]+" | "+tokenizer[2]);
}
}catch(Exception e){}
它会为您输出
23 |years | old
15 |years | young
答案 2 :(得分:0)
您有两种方法可以做到这一点:
答案 3 :(得分:0)
如果您想要的是将所有内容全部拆分,那么我想您可以使用
useDelimiter(":\\n")
这应该在:和新闻空间上分开,但它不是处理数据的最有效方式,特别是如果每行文本以相同的格式列出并代表完整的条目。如果是这种情况,那么我的建议是只分开一个新的行开头,就像这样;
s.useDelimiter("\\n");
while(s.hasNext()){
String[] result = s.next.split(":");
//do whatever you need to with the data and store it somewhere
}
这将允许您逐行处理数据,并将其分割到所需的位置。但是,如果您计划逐行完成,我建议您查看BufferedReader,因为它有一个readLine()函数,可以使事情变得更容易。
答案 4 :(得分:0)
你可能想要创建一个包含':'和换行符的分隔符模式 我没有测试它,但是[\ s |:] +是一个匹配一个或多个空白字符的正则表达式,还有':'。 试试看:
input.useDelimiter("[\\s|:]+");
答案 5 :(得分:0)
只要所有行都包含所有三个字段,您就可以使用input.useDelimiter(":\n");