トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

文字列処理_android

文字列処理(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"のように置き換わる。

Future's Laboratory 技術格納庫 2004-2013 Yutaka Yoshisaka.