2011/05/10

Android - SQLite 文字列ソート

SQLiteの文字列ソートにおいて (SQLiteに限らず) , かな, 英字, 数字, 記号 の順番を群単位で変えたい場合は, そのためのフィールドを追加するのが一番簡単っぽい。というより、これしか思い浮かばなかった。

デフォルトだと<数字, 英字 .... >という順番だったが, ワードの頭文字に対して<かな, 記号(その他), 数字, 英語> という順番にソートしたかった。そこで, sortgroupというフィールドを目的のテーブルに作成する。

sortgroupの値は, 半角カナ → 1, 記号(その他) → 2, 数字 → 3, 英字 → 4 とする。

こうすれば, SELECT * FROM table ORDER BY sortgroup ASC みたいにすれば取ってこれるよね。

で、頭文字がどのタイプのものかを判別するためのプログラムは以下

  1. public class CheckWordType {  
  2.     // 文字列が 半角カタカナ(1), その他(2), 数字(3), アルファベット(4)のどれかを調べる  
  3.     public int checkCharType(char c){  
  4.         if(c >= 0xff66 && c <= 0xff9d){ // 半角カタカナ (1) http://ash.jp/code/unitbl1.htm 参照  
  5.             return 1;  
  6.         }else if(Character.isLetter(c)){ // アルファベット (4)  
  7.             return 4;  
  8.         }else if(Character.isDigit(c)){ // 数字 (3)  
  9.             return 3;  
  10.         }else// その他 (2)  
  11.             return 2;  
  12.         }  
  13.     }  
  14. }  

まぁ、まとめるほどの事でもないんだけど、書く記事がなかったんでw

0 コメント:

コメントを投稿

 
;