1

我正在从学校做一个简短的作业,由于某种原因,两个相邻的分隔符导致打印一个空行。如果它们之间有空格但没有空格,我会理解这一点。我错过了一些简单的东西吗?我希望每个令牌一次打印一行而不打印~.

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
4

3 回答 3

3

如果它们之间有空格,我会理解这一点,但没有

是的,它们之间没有空格,但是它们之间有一个空字符串。实际上,每对字符之间都有空字符串。

这就是为什么当您的分隔符彼此相邻时,拆分将在它们之间获得空字符串。

我希望每个令牌一次打印一行而不打印~.

那你为什么要包含/在你的分隔符中?[./~]表示匹配.,或/,或~。拆分它们也不会打印/. 如果您只想拆分~.,那么只需在字符类中使用它们 - [.~]。但同样,它并不是很清楚,你到底想要什么输出。可能您可以为当前输入发布预期的输出。


好像你正在分裂.,//~。在这种情况下,您不能在此处使用字符类。您可以使用此模式进行拆分:-

String[] words = asuURL.split("[.]|/~?");

这将拆分: - ./~/(因为~是可选的)

于 2013-02-03T20:58:56.167 回答
2

你认为唾液会产生什么?/ 和 ~ 之间是什么?是的,没错,有一个空字符串(“”)。

于 2013-02-03T21:07:04.567 回答
0

之间没有字符,/~因此当您拆分这些字符时,您应该期望看到一个空白字符串。

我怀疑你不需要分裂~,事实上我也不会分裂.

于 2013-02-03T21:02:26.323 回答