1

在我的 iPhone 应用程序中,我有一个UITextFieldans 文本字段值被带入一个NSString,我想查找是否"在其中输入了特定字符

我怎样才能做到这一点?

UITextField *textField;
NSString *String=textField.text;

-(IBAction)FindCharecter:(id)sender
{
    // if String Contain ",then i wish to print @"Found symbol"
}
4

5 回答 5

4
 UITextField *textField;
 NSString *string=textField.text;
 if ([string rangeOfString:@"\""].location == NSNotFound) {
   NSLog(@"string does not \"");
  } else {
   NSLog(@"string contains \"");
 }   

检查这个

于 2013-01-01T08:32:37.897 回答
2

尝试这个:

-(IBAction)FindCharecter:(id)sender
  {

    // if String Contain ",then i wish to print @"Found symbol"
     if ([String rangeOfString:@"\""].location != NSNotFound) {

          NSLog(@"Found");
     }
     else{

          NSLog(@"Not Found");
      }

  }
于 2013-01-01T08:34:11.200 回答
0

您需要确认并实施UITextFieldDelegate 协议

1)如果你想在旅途中检查模式(当用户自己输入时),你需要实现

- (BOOL)textField:(UITextField *)textField 
    shouldChangeCharactersInRange:(NSRange)range 
     replacementString:(NSString *)string

2)如果您想检查用户何时完成输入,您可能需要实现

- (void)textFieldDidEndEditing:(UITextField *)textField

现在来做实际的比较过程

if([textFieldString rangeOfString:@"YOUR_COMPARISON_STRING"].location == NSNotFound){
     //your pattern is not typed yet
}else{
    //There it is..
}
于 2013-01-01T08:35:48.860 回答
0

实现以下委托UITextField

-(NSString *)ValidateSearchString:(NSString *) aString{   

    NSCharacterSet * set = [[NSCharacterSet characterSetWithCharactersInString:@"YourString"] invertedSet];

    if ([aString rangeOfCharacterFromSet:set].location != NSNotFound) { 
        return @"Not Found";
    }

    return @"Found";;
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

    NSLog("particular character  %@",[self ValidateSearchString:string]);

     // string will contain the particular character typed;

    return YES;
}
于 2013-01-01T08:32:52.793 回答
0

您可以shouldChangeCharactersInRange为此使用委托方法。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
   if([string isEqualToString:@"\""])
   {
     NSLog(@"Entered \" ");
   }
}

或者你可以使用:rangeOfStringof NSStringclass。

if ([textField.text rangeOfString:@"\""].location == NSNotFound)
 {
    NSLog(@"Entered \" ");
 }

以供参考:

textField:shouldChangeCharactersInRange:replacementString:

询问委托人是否应该更改指定的文本。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

参数

文本域

The text field containing the text.

范围

The range of characters to be replaced

细绳

The replacement string. 

返回值

如果应替换指定的文本范围,则为 YES;否则,不保留旧文本。讨论

每当用户在文本字段中键入新字符或删除现有字符时,文本字段都会调用此方法。可用性

Available in iOS 2.0 and later.

UITextFieldDelegate

范围字符串

查找并返回给定字符串在接收器中第一次出现的范围。 - (NSRange)rangeOfString:(NSString *)aString

参数

字符串

The string to search for. This value must not be nil.

Important: Raises an NSInvalidArgumentException if aString is nil.

返回值

一个 NSRange 结构,给出第一次出现的 aString 在接收器中的位置和长度。如果 aString 未找到或为空 (@""),则返回 {NSNotFound, 0}。

讨论

没有选项的调用rangeOfString:options:

此方法检测所有无效范围(包括具有负长度的范围)。对于链接到 OS X v10.6 及更高版本的应用程序,此错误会导致异常;对于链接到早期版本的应用程序,此错误会导致警告,每次应用程序执行时仅显示一次。可用性

在 NSString.h 中声明 在 UITextField.h 中声明

NSString 类

于 2013-01-01T08:34:02.667 回答