我正在做学校的一项短期作业,由于某种原因,两个相邻的分隔符导致打印空行。如果它们之间有空间但没有,我会理解这一点。我错过了一些简单的东西吗?我希望每个标记一次打印一行而不打印 ~.
public class SplitExample
{
public static void main(String[] args)
{
String asuURL = "www.public.asu.edu/~JohnSmith/CSE205";
String[] words = new String[6];
words = asuURL.split("[./~]");
for(int i = 0; i < words.length; i++)
{
System.out.println(words[i]);
}
}
}//end SplitExample
编辑:下面需要的输出
www
public
asu
edu
JohnSmith
CSE205
最佳答案
I would understand this if there was a space between them but there isn't
是的,它们之间没有空格,但它们之间有一个空字符串。事实上,每对字符之间都有空字符串。
这就是为什么当您的分隔符彼此相邻时,拆分将在它们之间得到空字符串。
I would like each token to print one line at a time without printing the
~.
那你为什么在分隔符中包含 /
呢? [./~]
表示匹配.
,或者/
,或者~
。拆分它们也不会打印 /
。
如果您只想在 ~.
上拆分,则只需在字符类中使用它们 - [.~]
。但同样,您并不清楚您到底想要什么输出。也许您可以发布当前输入的预期输出。
似乎您在 .
、/
和 /~
上 split 。在这种情况下,您不能在此处使用字符类。您可以使用此模式拆分:-
String[] words = asuURL.split("[.]|/~?");
这将拆分为:- .
、/~
或 /
(因为 ~
是可选的)
关于java - 为什么我的 Java split 方法导致打印空行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14677223/