gpt4 book ai didi

java - 相同的正则表达式,但使用 StringTokenizer 和 Scanner 类定界符给出不同的结果

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:40:53 25 4
gpt4 key购买 nike

我尝试使用 StringTokenizer 类来分隔句子中的每个单词。这对我来说可以。但是我使用 Scanner 类为我的案例找到了另一种解决方案。我以两种方式应用了相同的正则表达式,但得到了不同的结果。我想知道我得到不同输出但表达相同的原因。
这是我的代码:

String sentence = "I have some problems with this section!"
+ " But I love to learn.";


StringTokenizer st = new StringTokenizer(sentence, "[! ]");
System.out.println("========Using StringTokenizer=========");
while (st.hasMoreTokens()) {
System.out.println(st.nextToken());
}


Scanner s = new Scanner(sentence);
s.useDelimiter("[! ]");
System.out.println("========Using Delimiter=========");
while (s.hasNext()) {
System.out.println(s.next());

}

输出形式 StringTokenizer:

========Using StringTokenizer=========
I
have
some
problems
with
this
section
But
I
love
to
learn.

使用 Scanner 类输出:

========Using Delimiter=========
I
have
some
problems
with
this
section

But
I
love
to
learn.

最佳答案

这是因为Scanner可能会匹配一个空的String,而StringTokonizer不会。在这种情况下,“部分!但是” Scanner 匹配 ! 符号后的空格,而 StringTokenizer才不是。

关于java - 相同的正则表达式,但使用 StringTokenizer 和 Scanner 类定界符给出不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33609260/

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