[Objective-C] 正規表現 で文字列からUnicode 制御文字を削除する

投稿者: | 2014/01/01

例:Evernote のノートタイトルには制御文字が入っていてはいけない

例えば、Evernote のノートを生成するとき、タイトルに制御文字(改行とかタブスペースとか)が含まれているとエラーになります。 *012014.01.01 現在

ですから、その様な場合は、予めそれら制御文字を除去してやる必要があるわけです。

 

NSRegularExpression* で正規表現を用いて消してしまう

制御文字の削除は、正規表現を利用します。

Objective-C での正規表現はNSRegularExpression* を使います。

今回の例(制御文字の除去)であれば、以下の様になります。

NSString* noteTitle = @"thogenpiyotfugar";
NSLog(@"除去前:%@", noteTitle);
NSString* regPattern = @"^[\p{Z}]|[\p{Cc}\p{Zl}\p{Zp}]|[\p{Z}]?$";
NSRegularExpression* regExp = [NSRegularExpression regularExpressionWithPattern:regPattern options:1 error:nil];
noteTitle = [regExp stringByReplacingMatchesInString:noteTitle options:0 range:NSMakeRange(0, noteTitle.length) withTemplate:@""];
NSLog(@"除去後:%@", noteTitle);

 

Unicode 制御文字のリスト

Unicode の制御文字指定ですが、以下を参考にしました。


脚注

脚注
01 2014.01.01 現在

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください