1

以下のコードには変数「name」があります。これには、姓名または名のみが含まれる場合があります。このコードは、変数「name」に空白があるかどうかをチェックします。スペースが存在する場合、それは分割されます。

ただし、以下の場合に「エラー:スレッド「main」の例外java.lang.ArrayIndexOutOfBoundsException:1 at Space.main(Space.java:9)」が発生します。

  • 「リチャード」の前に空白がある場合
  • 「Richard」の後に2番目の単語または2番目の文字列のない空白がある場合。
  • 「Richard」の後にスペースが2つある場合、名前はlname変数に保存されません。

このエラーを解決する方法。

public class Space {
    public static void main(String[] args) {
    String name = "Richard  rinse ";
    if(name.indexOf(' ') >= 0) {
        String[] temp;
        temp = name.split(" ");
        String fname = temp[0];
        String lname = temp[1];
        System.out.println(fname);
        System.out.println(lname);
    } else {
        System.out.println("Space does not exists");}
    }
}
4

5 に答える 5

3

このように「\s」を使用して文字列を分割する必要があります

name.split("\\s+");
于 2012-09-17T13:05:04.807 に答える
1

2つのスペースがある場合、temp [1]は空になります。「リチャードリンス」を指定すると、配列はこのように分割されます。

1リチャード

2

3すすぎ

あなたはtrim()文字列をして、次のようなことをする必要があります

while(name.contains("  "))
    name=name.replace("  "," ");
于 2012-09-17T13:07:52.047 に答える
1
String[] parts = name.trim().split("\\s+");

if (parts.length == 2) {
    // print names out
} else {
    // either less than 2 names or more than 2 names
}

trim配列内の先頭または末尾の空の文字列につながるため、先頭と末尾の空白を削除します

分割するトークンは、1つ以上の空白文字(スペース、タブなど)で構成される一連の文字を意味する正規表現です。

于 2012-09-17T13:16:37.973 に答える
0

多分そのように:

public class Space {
    public static void main(String[] args) {
        String name = "Richard  rinse ";
        String tname = name.trim().replace("/(\\s\\s+)/g", " ");
        String[] temp;
        temp = name.split(" ");
        String fname = (temp.length > 0) ? temp[0] : null;
        String lname = (temp.length > 1) ? temp[1] : null;
        if (fname != null) System.out.println(fname);
        if (lname != null) System.out.println(lname);
    } else {
        System.out.println("Space does not exists");
    }
}
于 2012-09-17T13:14:10.217 に答える
-1

空白をトリミングするには、これを使用します。

public String trimSpaces(String s){
    String str = "";
    boolean spacesOmitted = false;
    for (int i=0; i<s.length; i++){
        char ch = s.chatAt(i);
        if (ch!=' '){
            spacesOmitted = true;
        }
        if (spacesOmitted){
            str+=ch;
        }
    }
    return str;
}

次に、名前の代わりにトリミングされた文字列を使用します。

于 2012-09-17T13:13:52.820 に答える