尝试使用常量字符串分隔符来读取扫描程序 - java.util.scanner

时间:2013-03-05 18:19:39

标签: java file delimiter meta

我一直试图找到一种方法来读取由常量字符串分隔符分隔的文件中的某些数据。

分隔符包含元字符,我试图仅在它出现的位置拆分,因此正则表达式不合适。

有人可以为我提供建议吗,我知道如何实现我自己的方法来实现这一点,我要问的是,是否有内置于java的东西来执行此操作。

示例:

John%#@!~23s,243 doe%#@!~23s,243去了%#@!~23s,243去市场购买一些牛奶。

会导致。

致电1:.next() - >约翰 致电2:.next() - >母鹿 致电3:.next() - >去 致电4:.next() - >去市场买些牛奶。

2 个答案:

答案 0 :(得分:1)

  

分隔符包含元字符,我试图仅在它出现的位置拆分,因此正则表达式不合适。

你仍然可以使用正则表达式作为分隔符 - 只需使用Pattern.quote来确保正则表达式中的“特殊”字符不会干扰。

当然,假设您仍然想要使用Scanner。您可以使用Splitter

中的Guava

答案 1 :(得分:0)

嗯,我不确定你在哪里遇到问题。这应该有效:

代码:

    String input = "John %#@!~23s,243 doe %#@!~23s,243 went %#@!~23s,243 to market to buy some milk.";
    Scanner scanner = new Scanner(input).useDelimiter("\\s+" + Pattern.quote("%#@!~23s,243") + "\\s+");
    while (scanner.hasNext()) {
        System.out.println("Token: ." + scanner.next() + ".");
    }

输出:

Token: .John.
Token: .doe.
Token: .went.
Token: .to market to buy some milk..

Pattern.quote()对于该示例字符串(不包含元字符)并非严格必要,但可能需要,具体取决于实际输入。

相关问题