gpt4 book ai didi

java - 应该在 java.util.Scanner 中使用什么模式来获取下一个字符串标识符?

转载 作者:搜寻专家 更新时间:2023-11-01 02:17:11 24 4
gpt4 key购买 nike

在一行文本中,我有 "*(,identifier1*(identifier2"我想读取标识符,定义为单词字符 ([a-zA-Z_0- 9]).

我应该使用哪种模式?我想到了使用:

scanner.next( "[\\w]+");

但我收到异常 java.util.InputMismatchException

最佳答案

Scanner 的默认定界符是空格,因此 Scanner 对象中的第一个(也是唯一一个)标记是整个字符串 "*(,identifier1*(identifier2"。您要尝试的字符串通过调用 next("[\\w]+") 获取,这会导致抛出异常,因为它与您的输入不匹配。

你所追求的更像是findInLine("\\w+"):

Scanner scan = new Scanner("*(,identifier1*(identifier2");
System.out.println(scan.findInLine("\\w+"));
System.out.println(scan.findInLine("\\w+"));

产生:

identifier1
identifier2

或者,如果您想将输入字符串拆分为一个或多个非 (ascii) alpha-num-chars(和 _),请尝试:

Scanner scan = new Scanner("*(,identifier1*(identifier2").useDelimiter("\\W+");
while(scan.hasNext()) {
System.out.println(scan.next());
}

产生与以前相同的输出。

请注意,我使用了大写的 W,它等于:

\W == [^\w] == [^a-zA-Z0-9_]

关于java - 应该在 java.util.Scanner 中使用什么模式来获取下一个字符串标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4909615/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com