ソフトハイフンを含む文字列計算表示長の問題
1063 ワード
もう一つの問題はグループで出会った問題です.文字列がソフトハイフンとスクライブ文字の先頭の組み合わせである場合、長さを計算すると負の無限大(
-inf
)が表示されます.次のコードに従います.NSString *string = @"\u00AD\u0336\u00AD\u0336 ";
CGSize size = [string sizeWithFont:[UIFont systemFontOfSize:14]];
NSLog(@"%@",NSStringFromCGSize(size));
出力:
2014-04-02 11:52:46.290 Test[3499:907] {-inf, 18}
計算された文字サイズに基づいてビューをレイアウトすることがよくありますが、これらの文字列に遭遇し、
-inf
を特別に処理していないと、Appが異常に動作する可能性があります.現在、Appにはコメント、情報など、多くのユーザーが自分でコンテンツを入力しています.これらは悪意のあるユーザーにこれらのバグテキストを入力してアップロードさせやすいので、あなたのAppは異常になりやすいので、特別な処理が必要です.これらの特殊な文字列は、一般的にローカルAppではなく、ユーザーが生成し、サーバ側で処理することを推奨します.ローカルの簡単な処理方法はTrimです.string = [string stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithRange:NSMakeRange(0xAD, 1)]];