1. ホーム
  2. java

[解決済み] 以下のコードで s.split("\s+")) は何を意味するのでしょうか?[重複]

2022-02-08 06:31:46

質問

以下のコードでは、String s という文字列の名前を与えています。この文字列は、フレーズ、すなわち、単一のスペースで区切られた1つまたは複数の単語を含んでいます。このプログラムは、このフレーズの頭文字を計算し、返す。

import java.math.*;
import java.util.*;
import static java.util.Arrays.*;
import static java.lang.Math.*;
public class Initials {
  public String getInitials(String s) {

    String r = "";
    for(String t:s.split("\\s+")){
      r += t.charAt(0);
    }
    return r;
  }


  void p(Object... o) {
          System.out.println(deepToString(o));
      }


}

例 john fitzgerald kennedy"

戻り値:"jfk"

解決方法は?

簡単に言うと、入力文字列をスライスして s を指定された正規表現に基づいて実行します。

この正規表現は、単に「1つ以上の空白"」という意味です。 (参照 ここで これらのパターンが何を意味するかについては、広範な説明を参照してください)

このように、split を呼び出すと "john", "fitzgerald", ...を含む配列が返されます。 この配列は、for-each型のforループを使って、直接"process"されます。

そして、それぞれの文字列の最初の文字を選ぶと、"jfk"になります。