最終更新:2016/03/10
サンプル Androidのファイル名に使えない文字を除去する String#replaceAll(String regexp, String string) で使えない文字を除去す。 Androidでファイル名に使えない文字は以下の9個らすい。 < > ; * ? " / \ | |
メソッド(説明用) | |
public String cutIllegalCharAsFileName(String fname) { if(fname == null || fname.length() == 0) return ""; return fname.replaceAll("<","") .replaceAll(">", "") .replaceAll(";", "") .replaceAll("\\*","") .replaceAll("\\?","") .replaceAll("\"", "") .replaceAll("/","") .replaceAll("\\\\", "") .replaceAll("\\|",""); } | |
追記2016/03/10 | |
メソッド(エレガント版) | |
初版(説明用)を書いた後すぐに気づいたのぢゃが、エレガント版でよさげ。 初版の方は消そうと思ったが、説明用として残しておくととすた。 | |
public String cutIllegalCharAsFileName(String fname) { if(fname == null || fname.length() == 0) return ""; return fname.replaceAll("[;\\*\\?\"/<\\\\>\\|]", ""); } | |
呼び出し | |
String strDummy = "a|bc String strDummy2 = cutIllegalCharAsFileName(strDummy); Log.d("Debug", "result = " + strDummy2); | |
実行結果 | |
03-10 16:15:38.292 29823-29823/? D/Debug: result = abcdef123456789ABCDEFGHI |
んまぁ、ご他聞に漏れず、特殊文字絡みなのでエスケープ文字(この場合はバックスラッシュ)をどう使うかがポイントぢゃ。 String#replaceAll(String regexp, String string)は第1匹数が正規表現なので、エスケープ処理が2段階発生す。つまり、 ・Androidコーディング上のエスケープ指定 ・正規表現上のエスケープ指定 ぢゃ。 < 、> 、; / についてはエスケープ不要 " についてはAndroidコーディング上、 * 、? 、| については正規表現上、 \ については両方でのエスケープ指定が必要。 といふことで、上記のメソッドになった次第。 |
本ページをご覧の御仁にはおそらく以上の説明で十分と思われるが、も少し続けてみよう。 エスケープ処理(文字)とは「1つ後ろの文字が持つ特別な意味を無効にして単なる文字として扱わせる」処理ぢゃ。 例えば、アスタリスクは正規表現では「直前の文字の0回以上の繰り返し」という意味を持つ。この特別な意味を無効にして 「アスタリスクという文字」として取り扱わせるのが「エスケープ処理」である。 正規表現のエスケープ文字(処理)はバックスラッシュ(を前につける)ぢゃ。なので 「アスタリスクという文字」の正規表現は |
\* |
となる。これを単純にreplaceAllの第1引数にぶち込むと string.replaceAll("\*","") になるが、お次は「Androidコーディング上のエスケープ処理」を考えなければならぬ。 文字列の指定は、ダブルクォートでくくるのだが、バックスラッシュは特別な意味を持つ。 文字列に改行コードやタブコードを指定するのに |
"abc\ndef" 改行 \n "abc\tdef" タブ \t |
とするぢゃろう? このバックスラッシュの特別な意味を無効にするにはバックスラッシュをつけなければならぬのだ。 (ちなみに文字列にダブルクォートを含める場合にバックスラッシュをつけなければならぬのも同じ理屈。 「文字列指定の終わり」というダブルクォートの特別な意味を無効にしている) 結局「文字列stringから全てのアスタリスクを除外する」には |
string.replaceAll("\\*","") |
と唱える。 あとはAndroidでファイル名に使えない文字9個についてエスケープ処理の要否を考えてできたのが上記メソッドということぢゃ。 |
時報機能付きデジタル時計作りますた。
・iOS 7 がサポートする全フォント(200種以上)使用可能。(iOS版)
・じいやが厳選したフリーフォント&Sofia Pro Soft全書体をビルトイン(Android版)
・5つのサウンドファイルセット
(デジタル時計、鳩時計、ボイス、教会の鐘、Whittingtonチャイム)
・全ビルトインサウンド、OSのボリューム調整とは別立ての
ボリューム指定可能(iOS版5段階、Android版3段階)
・お手持ちの音声やフォントファイルを外部ソースとして使用可能(Android版)
SignalClock |
![]() |
無料 |
SignalClock |
![]() |
|
SignalClock Lite |
![]() |
無料 |
こちらは、簡易テキストエディタです。
Twitterの下書き、ちょっとしたメモを保存しておくのに便利です。
Texpalle |
![]() |
iPad専用 無料 |
Texpalle |
![]() |
試使用無料 |