1

私は学校からの短い課題に取り組んでいますが、何らかの理由で、2 つの区切り文字が隣り合っているため、空の行が印刷されます。それらの間にスペースがあれば理解できますが、そうではありません。簡単なものがありませんか?各トークンで一度に 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

それらの間にスペースがあればこれを理解できますが、そうではありません

確かにそれらの間にスペースはありませんが、それらの間に空の文字列があります。実際、文字の各ペアの間に空の文字列があります。

そのため、区切り文字が隣り合っている場合、分割によりそれらの間に空の文字列が取得されます。

各トークンで一度に 1 行ずつ印刷したいのですが、~.

では、なぜ/デリミタに含めたのでしょうか? [./~]は一致.、または/、またはを意味し~ます。それらを分割しても、/. で分割したい場合は~.、文字クラスで使用してください - [.~]. しかし、繰り返しになりますが、正確にどのような出力が必要かは明確ではありません。現在の入力に対して予想される出力を投稿できる場合があります。


./とで分割しているようです/~。その場合、ここでは文字クラスを使用できません。このパターンを使用して分割できます: -

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

これは次で分割されます: - ./~または/(~オプションであるため)

于 2013-02-03T20:58:56.167 に答える
2

唾液は何を生み出すと思いますか。/ と ~ の間には何がありますか? はい、そうです、空の文字列 ("") があります。

于 2013-02-03T21:07:04.567 に答える
0

間に文字がない/~ため、これらの文字で分割すると、空白の文字列が表示されることが予想されます。

あなたは別れる必要はないと思いますし~、実際私も別れるつもりはありません.

于 2013-02-03T21:02:26.323 に答える