为什么我的Java拆分方法导致打印空行?

时间:2013-02-03 20:57:17

标签: java split string println

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

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

3 个答案:

答案 0 :(得分:3)

  

如果他们之间有空间,我会理解这一点   ISN&#39;吨

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

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

  

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

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


好像你在.//~上分道扬..在这种情况下,您无法在此处使用字符类。您可以使用此模式进行拆分: -

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

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

答案 1 :(得分:2)

你认为吐痰会产生什么? /和〜之间有什么关系?是的,没错,有一个空字符串(“”)。

答案 2 :(得分:0)

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

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