useDelimiter() 打印空 space
useDelimiter() printing empty space
我有一个字符串,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
我不完全确定我的正则表达式语法哪里出了问题。
next
将继续读取您提供给扫描仪的字符串,直到找到分隔符,然后 return 读取的字符串。
让我们看看在扫描器读取 edu
之后会发生什么。扫描仪的位置现在是:
www.public.website.edu/~JohnSmith/JAVA000
^
它从转到下一个字符开始阅读。它看到下一个字符 ~
也是一个分隔符,因为它匹配 [./~]
正则表达式,所以它在这里停止。扫描仪读取了哪个 non-delimiter 字符? None!所以 next
return 是一个空字符串,你打印那个空字符串,这会导致出现空行。
如果您不喜欢空行,您可以使用 [=18] 将 [./~]
中的一个或多个字符指定为分隔符=] 量词:
scan.useDelimiter("[./~]+");
这样,/~
被视为 一个 分隔符,而不是 2 个单独的分隔符。
我有一个字符串,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
我不完全确定我的正则表达式语法哪里出了问题。
next
将继续读取您提供给扫描仪的字符串,直到找到分隔符,然后 return 读取的字符串。
让我们看看在扫描器读取 edu
之后会发生什么。扫描仪的位置现在是:
www.public.website.edu/~JohnSmith/JAVA000
^
它从转到下一个字符开始阅读。它看到下一个字符 ~
也是一个分隔符,因为它匹配 [./~]
正则表达式,所以它在这里停止。扫描仪读取了哪个 non-delimiter 字符? None!所以 next
return 是一个空字符串,你打印那个空字符串,这会导致出现空行。
如果您不喜欢空行,您可以使用 [=18] 将 [./~]
中的一个或多个字符指定为分隔符=] 量词:
scan.useDelimiter("[./~]+");
这样,/~
被视为 一个 分隔符,而不是 2 个单独的分隔符。