24

ユーザー入力 (UITextField) からの文字列値が nil でない場合、「空白」かどうかを判断しようとしています。[textField.text isEqualToString:""]空白/空白の入力(いくつかの空白文字など)を避けたいので、チェックするだけでは十分ではありません。

この StOv の投稿 には、私の特定の問題に対する適切な解決策が示されているようです。

基本的には次のようになりますが、もっと良い方法があるはずです(またはすべきだと思います):

NSString *strResult;
NSScanner* scanner = [NSScanner scannerWithString:textField.text];
BOOL hasValidChars = [scanner scanUpToCharactersFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet] 
                                             intoString:&strResult];

// if hasValidChars == YES, we've got nonwhite space chars collected into strResult

これは明らかに私の特定の状況でのみ機能します。それでも、最初の文字がスペースで、必要なデータが続く場合は失敗します。だから、私はRubyに少し甘やかされてきたことに気づきましたが、Cocoaで文字列をトリミングするための実証済みの真のイディオムがあるに違いありません.

答えはすでに出ています。申し訳ありません。

NSString-stringByTrimmingCharactersInSet:はそれを行います:

指定された文字セットに含まれるレシーバ文字の両端から削除することによって作成された新しい文字列を返します。

誰かがこれを行う他の/好ましい方法を持っているかどうか、私はまだ知りたいです.

4

3 に答える 3

51

whitespaceAndNewlineCharacterSet を使用していますね。しかし、scanUpToCharactersFromSet を使用する代わりに、stringByTrimmingCharactersInSet を使用してみませんか? このようなもの...

strResult = [strResult stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

編集:これを投稿するまで、stringByTrimmingCharactersInSet が既に見つかっていることに気づきませんでした。

于 2009-01-23T20:22:18.183 に答える
13

あなたが探しているのは

[string stringByReplacingOccurrencesOfString:@" " withString:@""].

文字列の途中にある空白を削除することは「トリミング」とは呼ばれません。

定義によるトリミングは、エッジから機能します。

于 2010-09-30T20:04:13.380 に答える