KonifarPod

Objective-Cで入力文字列をエスケープする

   

Pocket

縁あってAndroidだけでなくiOSの開発も行うことになったので、初心者中の初心者である僕が得た知識を控えめにアウトプットしていこうと思います。

今回は文字列のエスケープです。ハイブリッドアプリの場合など、ネイティブのテキストボックスに入力された内容をwebviewのJavascriptに渡してあげる際にはエスケープは必須です。

Objective-Cで文字列のエスケープをするには、stringByReplacingOccurrencesOfString を利用します。うん、長い。Ruby書いてからだとげんなりするくらい長いです。

改行文字とシングルクォートの2つをエスケープしたい場合はどうするかというと、メソッドを重ねるだけです。メソッドチェーンのような仕組みではないのでちょっとめんどくさいです。

text_area に入力された文字列の、改行(\n)とシングルクォート(’)をエスケープするサンプルはこんな感じです。

NSString* jsStr = [NSString stringWithFormat:@"alert('%@')",
[[[text_area.txtMessage text]
stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"]
stringByReplacingOccurrencesOfString:@"'" withString:@"\\'"]
];
[webView_ stringByEvaluatingJavaScriptFromString:jsStr];

※ コードの改行は見やすいのでこうしてるだけです。

それにしても長ったらしいですね・・・。MonacaやTitaniumなど、Objective-C以外での開発を検討する人が多いのもわかる気がします。

Pocket

 - Develop