2011-12-14 12 views
4

このコードは、電話番号をきれいにする必要がありますが、それはしていません:なぜwhitespaceAndNewlineCharacterSetはスペースを削除しないのですか?

NSLog(@"%@", self.textView.text); 
// Output +358 40 111 1111 
NSString *s = [self.textView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
NSLog(@"%@", s); 
// Output +358 40 111 1111 

任意のアイデア何が間違っているのですか? 他の方法は、白い文字を削除するテキスト文字列から(ハードな方法を除く)?

答えて

11

は何のドキュメント、この

NSCharacterSet *dontWantChar = [NSCharacterSet whitespaceAndNewlineCharacterSet]; 
NSString *string = [[self.textView.text componentsSeparatedByCharactersInSet:dontWantChar] componentsJoinedByString:@""]; 
+0

パーフェクト、高すぎ!別の解決策を見つけましたが、あなたの答えは質問のために正しいものでした:) – JOM

2

stringByTrimmingCharactersInSetのドキュメントは言う:

の両方が指定された文字セットに含まれている 受信文字のを終了から取り除くことによって作られた新しい文字列を返します。

つまり、有効な文字列の前後にある問題のある文字を削除します。トリムメソッドがその部分に触れないため、文字列の中央に「嫌な」文字が残ります。

とにかく、あなたがやろうとしていることを実行するにはいくつかの方法があります(@ Narayanaの答えはこれでも良いです...)。私のソリューションは、変更可能な文字列であるためにあなたの文字列sを設定してから行うことを次のようになります。

[s replaceOccurrencesOfString: @" " withString: @"" options: NSBackwardsSearch range: NSMakeRange(0, [s length])]; 
+0

ドキュメントを試してみてください?文書化された環境で作業するのには使用されていません。 – JOM

+0

http://developer.apple.com/iphoneはとても良いリソースです。そして、あなたのために 'stringByTrimmingCharactersInSet'のドキュメンテーションにリンクしました。 –