!!!文字列処理(2012/12/16 更新) 文字列処理に関する覚書き。これは一般的なJavaでの機能になる。 import java.lang.String; import java.lang.StringBuffer; ↑ これはなくてもよい。 Javaの場合は、テキストはすべてUTF-8で扱うようにする。 !!文字列の格納 String str = "何か文字列"; !!文字列の連結 String str1 = "テスト"; String str2 = "です"; String str3 = str1 + str2; System.out.println(str3); // 標準出力としてテキストを表示 結果は str3 = テストです、になる。 ※ ログの出力については、別ページにリンク。 !!文字列の文字数を取得 String str1 = "テスト"; int len = str1.length(); // 文字列の長さを取得 結果は len=3 が返る(バイト数でなくて文字数である点に注意)。 !!文字列の検索 String str = "abcdefg"; int pos = str.indexOf('d'); // 単一の文字を検索 結果は pos=3 が返る。見つからない場合は-1が返る。 String str = "abcdefg"; int pos = str.indexOf("efg"); // 文字列を検索 結果は pos=4 が返る。見つからない場合は-1が返る。 !!文字列の比較 String str = "abcdef"; if (str.equals("abcdef")) { // strの文字列が第一引数と同じか System.out.println("等しい"); } !!数値を文字列に変換 int num = 12345; String str = Integer.toString(num); // int型を文字列に変換 float numF = 1.234f; String strF = Float.toString(numF); // float型を文字列に変換 double numD = 3.456; String strD = Double.toString(numD); // double型を文字列に変換 !!文字列を一部置き換える Stringクラスでは速度的に不利であるのでStringBufferを使用する。 String str = "abcdefg"; StringBuffer strBuff = new StringBuffer(str); strBuff = strBuff.replace(2, 2 + 3, "CDE"); str = strBuff.toString(); StringBufferのreplace関数にて、第一引数に置き換え開始位置、第二引数に置き換え終了位置、第三引数に置き換え文字列。 結果として、str="abCDEfg"となる。 PatternとMatcherを使って置き換えるのもよいが、「\(バックスラッシュ)」がうまくいかなかった。 !!文字列を一部置き換える(すべてのマッチするものを置き換え) public static String replaceString(String orgStr, String srcStr, String destStr) { if(orgStr == null || orgStr.length() == 0) return ""; int pos, pos2; int srcStrLen; int destStrLen; StringBuffer orgStrBuff; srcStrLen = srcStr.length(); destStrLen = destStr.length(); orgStrBuff = new StringBuffer(orgStr); // 高速化のため、文字列編集はStringBufferを使用する pos = 0; while(true) { try { pos2 = orgStrBuff.indexOf(srcStr, pos); if(pos2 < 0) break; } catch(Exception e) { break; } // 文字列を置き換え orgStrBuff = orgStrBuff.replace(pos2, pos2 + srcStrLen, destStr); pos = pos2 + destStrLen; } return orgStrBuff.toString(); } のような関数を作るのが手っ取り早い。 String str = "abc_def_ghi"; str = replaceString(str, "_", "*"); のように使用すると、str="abc*def*ghi"のように置き換わる。