Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java useDelimiter()打印空空间_Java_Regex_String_Java.util.scanner - Fatal编程技术网

Java useDelimiter()打印空空间

Java useDelimiter()打印空空间,java,regex,string,java.util.scanner,Java,Regex,String,Java.util.scanner,我有一个字符串,stringurl=“www.public.website.edu/~JohnSmith/JAVA000”。我的目标是使用分隔符获得所需的输出,如下所示 我确实得到了一些输出,但似乎有一行额外的打印出来,我不完全确定它来自哪里 代码: 实际: www public website edu JohnSmith JAVA000 预期: www public website edu JohnSmith JAVA000 我不完全确定我的正则表达式语法哪里出了问题。下一步将继续读取您

我有一个字符串,
stringurl=“www.public.website.edu/~JohnSmith/JAVA000”。我的目标是使用分隔符获得所需的输出,如下所示

我确实得到了一些输出,但似乎有一行额外的打印出来,我不完全确定它来自哪里

代码:

实际:

www
public
website
edu

JohnSmith
JAVA000
预期:

www
public
website
edu
JohnSmith
JAVA000

我不完全确定我的正则表达式语法哪里出了问题。

下一步
将继续读取您提供给扫描仪的字符串,直到找到分隔符,并返回读取的字符串

让我们看看扫描仪读取
edu
后会发生什么。扫描仪的位置现在位于:

www.public.website.edu/~JohnSmith/JAVA000
                      ^
它通过转到下一个字符开始阅读。它看到下一个字符
~
也是一个分隔符,因为它与
[./~]
正则表达式匹配,所以它停在这里。扫描仪读取的非分隔符字符是什么?没有一个因此
next
返回一个空字符串,然后打印该空字符串,这会导致出现空行

如果您不喜欢空行,可以使用
+
量词指定分隔符是
[./~]
中的一个或多个字符:

scan.useDelimiter("[./~]+");

这样,
/~
将被视为一个分隔符,而不是两个单独的分隔符。

下一步
将继续读取您提供给扫描仪的字符串,直到找到分隔符,并返回读取的字符串

让我们看看扫描仪读取
edu
后会发生什么。扫描仪的位置现在位于:

www.public.website.edu/~JohnSmith/JAVA000
                      ^
它通过转到下一个字符开始阅读。它看到下一个字符
~
也是一个分隔符,因为它与
[./~]
正则表达式匹配,所以它停在这里。扫描仪读取的非分隔符字符是什么?没有一个因此
next
返回一个空字符串,然后打印该空字符串,这会导致出现空行

如果您不喜欢空行,可以使用
+
量词指定分隔符是
[./~]
中的一个或多个字符:

scan.useDelimiter("[./~]+");

这样,
/~
被视为一个分隔符,而不是两个单独的分隔符。

它似乎打印的是空字符串,因为这是两个delimeters/和~。可能更容易使用番石榴拆分器:
splitter.onPattern(“[./~]”)。省略空字符串().split(“www.public.website.edu/~JohnSmith/JAVA000”)
它似乎在打印空字符串,因为这是两个delimeter/和~。使用番石榴拆分器可能更容易:
splitter.onPattern(“[./~]”)。ompitEmptyStrings().split(“www.public.website.edu/~JohnSmith/JAVA000”)
假设我只想提取字母和数字,去掉所有其他符号,为了消除两个或更多非字母数字字符组合在一起的影响,我必须使用“+”操作符?富有洞察力的多谢各位much@simonshampoo如果只需要字母和数字,可以使用正则表达式
[^a-zA-Z0-9]+
作为分隔符。它的意思是“除了字母和数字以外的所有东西,重复一次或多次。”假设我只想提取字母和数字,并去掉所有其他符号,以消除两个或多个非字母数字字符组合在一起的效果,我就必须使用“+”操作符?富有洞察力的多谢各位much@simonshampoo如果只需要字母和数字,可以使用正则表达式
[^a-zA-Z0-9]+
作为分隔符。它的意思是“除了字母和数字以外的所有东西,重复一次或多次。”