【问题标题】:Using multiple delimiters with scanner - Java在扫描仪中使用多个分隔符 - Java
【发布时间】:2013-05-27 20:40:35
【问题描述】:

我正在尝试使用制表符和换行符作为分隔符来读取 .txt 文件。我目前拥有的是:

Scanner fileScanner = new Scanner(new FileReader("propertys.txt"));

fileScanner.useDelimiter("[\\t\\n]");

我试过了:

fileScanner.useDelimiter("\\t|\\n");

fileScanner.useDelimiter("[\\t|\\n]");

我不知道出了什么问题,我搜索了很多,看起来其中一个应该可以工作。显然我做错了什么。

【问题讨论】:

    标签: java.util.scanner delimiter


    【解决方案1】:

    fileScanner.useDelimiter("\t|\n"); 应该可以。

    如果你有两个斜杠“\n”,第一个作为转义符,它不会正常工作。

    【讨论】:

      【解决方案2】:

      对于 useDelimiter 方法中用作参数的正则表达式,您应该使用换行符作为\n 而不是\\n 和制表符作为\t 而不是\\t。来自 Java 模式类:http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

      其中的一部分,我认为你应该定义你的正则表达式,例如,这样:

      fileScanner.useDelimiter("\\s*[\t\n]\\s*");
      

      在换行符或制表符之间限制字符串 (\\s)。

      【讨论】:

      • 但是由于它是从 txt 文件中读取的,所以我认为我需要额外的斜杠?无论哪种方式它仍然没有工作,无论如何谢谢:)
      • 啊还是不行,我想我只是从不同的角度来处理它,不过感谢您的帮助。
      • 用我找到的其他东西再次编辑。我希望这次是好的:)
      • 天哪,我是个白痴,我在文件末尾有一个额外的换行符,这使它抛出异常。再次感谢您的帮助,现在一切都整理好了:)
      • 不客气,也欢迎来到 Stack Overflow。如果您认为有用(尤其是标点符号)或正确的答案(尤其是接受),我会建议您给出一个肯定的标点符号和/或接受给您的答案。接受答案将让您获得您的第一个徽章 (stackoverflow.com/badges),在这种情况下是学者徽章。投反对票(即积极的标点符号)还可以让您获得徽章,在这种情况下,就是支持者徽章。当然,这些只是建议;)
      猜你喜欢
      • 1970-01-01
      • 2014-04-03
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-26
      相关资源
      最近更新 更多