如何在UITextField中查找特定文本?

时间:2013-01-01 08:29:11

标签: objective-c ios nsstring uitextfield

在我的iPhone应用中,我有一个UITextField ans文字字段值被带入NSString,我想查找特定字符 " 输入

我该怎么做?

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

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

5 个答案:

答案 0 :(得分:4)

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

检查这个

答案 1 :(得分: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");
      }

  }

答案 2 :(得分: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;
}

答案 3 :(得分:0)

您可以使用shouldChangeCharactersInRange委托方法。

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

或者您可以使用rangeOfString类的NSString

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

供参考:

  

textField:shouldChangeCharactersInRange:replacementString:

     

询问代表是否应更改指定的文本。

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

<强>参数

     

<强>的TextField

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

  

<强> rangeOfString

     

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

     

<强>参数

     

<强> 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 Class

答案 4 :(得分:0)

您需要确认并实施UITextFieldDelegate protocol

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..
}