0

NSStringから英数字、-、およびを除くすべての文字を削除/置換する必要があります。正規表現を作成して、ユーザーがuitextfieldに英数字と-以外の文字を入力しないようにするにはどうすればよいですか。どうやってやるの。以前はshoulchangecharactersineangeで処理していましたが、現在はフィルターがますます大きくなり、if条件で処理できるようになっています。私のシナリオでは、正規表現が最良の選択かもしれません。私はあなたの考えとインプットに感謝します

4

2 に答える 2

1
-(BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)r replacementString:(NSString*)s
{
  NSCharacterSet * reject = [[NSCharacterSet characterSetWithCharactersInString:@"QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890-&"] invertedSet];
  if ([s rangeOfCharacterFromSet:reject].length)
  {
    return NO;
  }
  return YES;
}
于 2012-07-21T03:29:23.610 に答える
0

NSStringメソッドを使用して、rangeOfCharctersFromSet:このチェックを行うことができます。

最初に、許可された文字を含む文字セットを作成し、次にinvertedSetすべての許可されていない文字のセットを取得するために使用します。次に、このセット内の文字の範囲を文字列で検索します。セット内の文字が見つからない場合、返される範囲の値は次のようになります。{NSNotFound, 0}

NSMutableCharacterSet *legalCharacters = [NSCharacterSet alphanumericCharacterSet];
[legalCharacters addCharactersInString:@"-&"];
NSCharacterSet *illegalCharacters = [legalCharacters invertedSet];

NSString *testString = @"ThisStringWillFail@#$%";

if ([testString rangeOfCharacterFromSet:illegalCharacters].location == NSNotFound) {
    // string passed validation
} else {
    // string failed validation
}
于 2012-07-21T03:18:21.113 に答える