如何更改文本文件中的分隔符?

时间:2012-10-19 03:40:22

标签: java delimiter

假设我有一个我想读的 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错误。

6 个答案:

答案 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)

您有两种方法可以做到这一点:

  1. 连接字符串使其成为一行。
  2. 首先分隔“newline”,然后分隔“:”每个返回字符串标记。

答案 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");