我有一个字符串String url = "www.public.website.edu/~JohnSmith/JAVA000";
。我的目标是使用分隔符来获得所需的输出,如下所示。
我确实有点得到了输出,但似乎有一行多余的字被打印出来了,我不完全确定它是从哪里来的。
代码:
public static void main(String[] args) {
String url = "www.public.website.edu/~JohnSmith/JAVA000";
Scanner scan = new Scanner(url);
scan.useDelimiter("[./~]");
while (scan.hasNext()) {
System.out.println(scan.next());
}
实际:
www
public
website
edu
JohnSmith
JAVA000
预期:
www
public
website
edu
JohnSmith
JAVA000
我不完全确定我的regex语法哪里出了问题。
next
将继续读取您给扫描仪的字符串,直到找到分隔符,并返回读取的字符串。
让我们看看扫描仪读取edu
后会发生什么。扫描仪的位置现在是:
www.public.website.edu/~JohnSmith/JAVA000
^
它从下一个字符开始阅读。它看到下一个字符~
也是一个分隔符,因为它与[./~]
正则表达式匹配,所以它停止在这里。扫描仪读取的非分隔符是什么?没有一个因此,next
返回一个空字符串,然后打印该空字符串,从而显示空行。
如果您不喜欢空行,可以使用+
量词指定分隔符为[./~]
中的一个或多个字符
scan.useDelimiter("[./~]+");
这样,/~
被视为一个分隔符,而不是两个单独的分隔符。