0

私は使っている:

cleanedDataCellR2C2 =  [cleanedDataCellR2C2 stringByReplacingOccurrencesOfString:@"," withString:@""];

数字を除くすべてのキーボード文字をテキストフィールドから削除するための同様のステートメントがたくさんあります.... -(マイナス記号)、+(プラス記号)、および0、1、2、3、4、テキスト フィールド内の 5、6、7、8、および 9 の数字。上記の例では、 のコンマをNSStringnull 値に変換するだけです。

認めたくないのですが、あるプロジェクトでは、実際に約 80 のステートメントを使用しています。これは、上に示した以外のすべてのキーボード文字に対して 1 つです。もっと簡単な方法があるはずです。この仕事をするために何を提案しますか。

4

2 に答える 2

1

最善の解決策は、可能であれば、そもそも数値以外のデータを入力させないことです。使用していUITextFieldますか?そうでない場合は、これの残りを無視しますが、そうである場合:

まず、ViewControllerを次のようにしますUITextFieldDelegate

@interface MyViewController : UIViewController <UITextFieldDelegate>

そして後で、でviewDidLoad

self.myTextField.delegate = self;

次に、を追加しshouldChangeCharacterInRangeて、目的の文字のみを許可します。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSCharacterSet *nonNumeric = [[NSCharacterSet characterSetWithCharactersInString:@"+-0123456789"] invertedSet];

    if ([string rangeOfCharacterFromSet:nonNumeric].location == NSNotFound)
        return TRUE;
    else
        return FALSE;
}

第3に、テキストフィールドのキーボードを数値データ専用に変更することもできself.myTextField.keyboardType = UIKeyboardTypeNumbersAndPunctuationますUIKeyboardTypeDecimalPad

于 2012-07-31T04:57:35.447 に答える
1

正規表現を使用してみることができます。いくつかの例を次に示します。

正規表現を使用して NSString の部分文字列を検索/置換する

NSRegularExpression: URL テキストを <a> タグに置き換える

任意の数字を含む文字列を置換します

http://regexkit.sourceforge.net/RegexKitLite/もチェックしてください。

于 2012-07-31T04:35:26.597 に答える