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]+
作为分隔符。它的意思是“除了字母和数字以外的所有东西,重复一次或多次。”