最近、Javaのことについて書いてないので適当にStringのメソッドでも適当にまとめてみた。リファレンスからいくつかのメソッドを紹介(といっても結構取り上げてる気がするが)する。あと申し訳ない程度のサンプルを載せた。なんとなくコンストラクタは省略した
- charAt(int index)
- 指定されたインデックス位置にあるchar返す
String str = "ABC"; //Aが返ってくる System.out.println(str.charAt(0));
- compareTo(String anotherString)
- 2つの文字列を辞書的に比較する。大文字小文字を区別する
//違う文字列同士の比較 String str = "ABC"; String another = "DEF"; //ABCはDEFよりも辞書的に前なので負の数が返ってくる System.out.println(str.compareTo(another)); //DEFはABCよりも辞書的に後ろなので正の数が返ってくる System.out.println(another.compareTo(str));
//同じ文字列同士の比較 String str = "ABC"; String another = "ABC"; //0が返ってくる System.out.println(str.compareTo(another));
//大文字小文字の比較 String str = "ABC"; String another = "abc"; //負の数が返ってくる System.out.println(str.compareTo(another));
- compareToIgnoreCase(String str)
- 大文字と小文字の区別なしで、2つの文字列を辞書的に比較する
//大文字小文字の比較 String str = "ABC"; String another = "abc"; //0が返ってくる System.out.println(str.compareToIgnoreCase(another));
- concat(String str)
- 指定された文字列をこの文字列の最後に連結する。+演算子でも結合できるので、これを使う必要は無い
String str = "ABC"; String another = "DEF"; String constr = str.concat(another); //str自身に変化は無し System.out.println(str); //strとanotherが繋がった文字列 System.out.println(constr);
- contains(CharSequence s)
- この文字列が指定された文字シーケンスを含む場合に限りtrueを返す
String str = "筑波大学"; String another = "大学"; //strにanotherが含まれてるのでtrueが返る System.out.println(str.contains(another));
String str = "筑波大学"; String another = "東京大学"; //strにanotherが含まれてないのでfalseが返る System.out.println(str.contains(another));
String str = "筑波大学"; StringBuilder another = new StringBuilder("大学"); //引数はCharSequenceを実装していれば何でもOK System.out.println(str.contains(another));
- equals(Object anObject)
- この文字列と指定されたオブジェクトを比較する。文字列の比較にどうぞ
String str = "Java"; String another = "Java"; //同じ内容の文字列なのでtrueが返る System.out.println(str.equals(another));
String str = "Java"; String another = "JAVA"; //大文字小文字は区別されるのでfalse System.out.println(str.equals(another));
String str = null; //NullPointerException発生! System.out.println(str.equals("Java"));
String str = null; //これだとNullPointerExceptionを回避できる。結果はfalse System.out.println("Java".equals(str));
- equalsIgnoreCase(String anotherString)
- この文字列と他の文字列を比較する。大文字小文字を区別しない
String str = "Java"; String another = "JAVA"; //trueが返る System.out.println(str.equalsIgnoreCase(another));
- format(String format, Object... args)
- 指定された書式の文字列と引数を使って、書式付き文字列を返す。Java 1.5から利用可能
String str = String.format("%s %1.1f %s", "Java", 1.5f, "から使えます", 1234); //Java 1.5 から使えます 1234 と表示される System.out.println(str);
- indexOf(String str)
- この文字列内で、指定された文字列が最初に出現する位置を返す
String str = "hogehigehoge"; String another = "hige"; //4が返ってくる(最初の文字は0番目) System.out.println(str.indexOf(another));
String str = "hogehigehoge"; String another = "hoge"; //0が返ってくる System.out.println(str.indexOf(another));
- indexOf(String str, int fromIndex)
- 指定されたインデックス以降で、指定された文字列がこの文字列内で最初に出現する位置を返す。
String str = "hogehigehoge"; String another = "hoge"; //8を返す System.out.println(str.indexOf(another, 1));
String str = "hogehigehoge"; String another = "hoge"; //先頭からの位置を返すため、後ろの値を変えても同じ部分に一致するなら同じ値が返る System.out.println(str.indexOf(another, 4));
- isEmpty
- String#length()が0である場合にかぎり、trueを返す。Java 1.6から使える
String str = ""; //trueを返す System.out.println(str.isEmpty());
String str = "文字列"; //falseを返す System.out.println(str.isEmpty());
String str = null; //当然のことながらNullPointerException System.out.println(str.isEmpty());
- lastIndexOf(String str)
- この文字列内で、指定された部分文字列が一番右に出現する位置を返す。
String str = "hogehigehoge"; String another = "hoge"; //右のhogeの位置である8が返る System.out.println(str.lastIndexOf(another));
- lastIndexOf(String str, int fromIndex)
- この文字列内で、指定された文字列が最後に出現する位置を返す (検索は指定されたインデックスから開始され、先頭方向に行われる)。
String str = "hogehigehoge"; String another = "hoge"; //0が返る System.out.println(str.lastIndexOf(another, 4));
- length()
- この文字列の長さを返す。
String str = "hogehigehoge"; //12文字あるので12が返る System.out.println(str.length());
String str = "筑波大学最高!"; //7文字あるので7が返る System.out.println(str.length());
String str = "1234hoge"; String another = "\\d{4}hoge"; //trueが返る System.out.println(str.matches(another));
String str = "hage 12968457838743985 hoge"; String another = "\\w{4}\\s+\\d+ hoge"; //trueが返る System.out.println(str.matches(another));
- replace(CharSequence target, CharSequence replacement)
- targetに一致する部分文字シーケンスをreplacementに置き換えた文字列を返す
String str = "東京大学"; String target = "東京"; String replacement = "筑波"; String after = str.replace(target, replacement); //元の文字列には影響がない System.out.println(str); //筑波大学が返っている System.out.println(after);
String str = "hogehigehoge"; String target = "hoge"; String replacement = "hige"; String after = str.replaceAll(target, replacement); //hogeが全てhigeに変更されている System.out.println(after);
String str = "hogehigehoge"; String target = "h\\w{3}"; String replacement = "foo"; String after = str.replaceAll(target, replacement); //当然ながら元の文字列に影響は無い System.out.println(str); //hから始まる4文字の部分文字列が全てfooに変わる System.out.println(after);
String str = "1234567890"; String target = "\\d"; String replacement = "a"; //数値が全部aになっている System.out.println(str.replaceAll(target, replacement));
String str = "2010/08/26"; String[] elements = str.split("/"); for(int i = 0; i < elements.length; i++){ System.out.println(elements[i]); } //1.5以降なら拡張for文が使える for(String element : elements){ System.out.println(element); }
String str = "255.255.255.255"; String[] elements = str.split("\\."); for(String element : elements){ System.out.println(element); }
- startsWith(String prefix)
- この文字列が、指定された接頭辞で始まるかどうかを判定する
String str = "JavaScript"; String prefix = "Java"; //trueが返ってくる System.out.println(str.startsWith(prefix));
String str = "JavaScript"; String prefix = "C#"; //falseが返ってくる System.out.println(str.startsWith(prefix));
- endsWith(String suffix)
- この文字列が、指定された接尾辞で終るかどうかを判定する
String str = "JavaScript"; String prefix = "Script"; //trueが返ってくる System.out.println(str.endsWith(prefix));
- substring(int beginIndex)
- この文字列の部分文字列である新しい文字列を返す
String str = "JavaScript"; String after = str.substring(4); //元の文字列には影響無し System.out.println(str); //Scriptが返ってる System.out.println(after);
- substring(int beginIndex, int endIndex)
- この文字列の部分文字列である新しい文字列を返す。
String str = "JavaScript"; //2〜4文字目が返ってくる System.out.println(str.substring(2, 5));
- toLowerCase()
- この文字列内のすべての文字を小文字に変換する
String str = "JAVA"; String after = str.toLowerCase(); //しつこいようだけど、元の文字列には影響なし System.out.println(str); //全て小文字に System.out.println(after);
- toUpperCase()
- この文字列内のすべての文字を大文字に変換する
String str = "java"; //全て大文字に System.out.println(str.toUpperCase());
- trim()
- 先頭と最後の空白を除いた文字列を返す
String str = " Java "; String after = str.trim(); //こうしても元の文字列に変化はない System.out.println(str); //両端のスペースが消されている System.out.println(after);
String str = " Java "; //全角スペースは消えない System.out.println(str);