0

我正在尝试检查用户是否在 UITextField 中输入了两个单词。但是,我还需要检查这两个单词是否也至少是两个字符。目前,我知道如何检查 UITextField 内容的唯一方法是在修剪文本前面的空格后检查字符之间的空格。

这是我正在使用的代码:

if ([textField.text length] > 0) {

        NSString *name = [textField text];
        NSString *trimmedString = [name stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
        NSRange whiteSpaceRange = [trimmedString rangeOfCharacterFromSet:[NSCharacterSet whitespaceCharacterSet]];

        if (whiteSpaceRange.location != NSNotFound) {
            NSLog(@"Found whitespace");
        }

    }

就像我说的,我的目标是获取 UITextField 的内容,并检查用户是否输入了两个单词,每个单词的长度至少为两个字符。我做错了什么?

4

3 回答 3

2

最好的起点是使用该NSString方法componentsSeparatedByCharactersInSet:将文本字段内容拆分为一个NSArray字符串。

然后,您可以确保数组至少有 2 个元素(单词)并迭代使用键值编码来确保每个元素至少有两个字符:

NSArray *words = [textField.text componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
if (words.count == 2)
{
    NSNumber *lengthOfShortestWord = [words valueForKeyPath:@"@min.length"];
    if (lengthOfShortestWord.intValue == 2)
    {
        // Success !
    }
}
于 2013-09-10T15:00:49.907 回答
2

让我们首先尝试了解您在做什么:
您正在使用stringByTrimmingCharactersInSet方法。来自 Apple 文档

返回通过从给定字符集中包含的接收者字符的两端删除而生成的新字符串。

这意味着它在从两端删除字符集后返回单个字符串。在您的情况下,您提供了 whiteCharacterSet,它是空格和制表符。这意味着当您想从字符串的两端删除多余的空格时,此方法很有用。但是您的要求是将字符串中的两个单词分开。

为此,NSString 有另一种返回分隔单词数组的方法。

componentsSeparatedByCharactersInSet:

返回一个数组,其中包含来自接收者的子字符串,这些子字符串已被给定集中的字符分割。

通过使用这种方法,您可以轻松检索分离的单词并使用 for 循环检查每个单词是否至少包含两个字符。像这样:

 NSString *str= @"Puneet";
  if ([str length] > 0) {
    NSArray *trimmedArray = [str componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    if(trimmedArray.count > 1)
    {
    for(NSString *str in trimmedArray)
    {
      if(str.length >=2)
        NSLog(@"Have minimum two characters");
      else
        NSLog(@"Dont Have minimum two characters");
    }
    }
    else{
      NSLog(@"No Two words are present");
    }
  }
于 2013-09-10T15:11:17.463 回答
1

下面的检查呢:

if ([textField.text length] > 0) {
    NSArray *name = [textField.text componentsSeparatedByString:@" "];
    if (name.count == 2) {
        if (((NSString *)name[0]).length >= 2) {
            if (((NSString *)name[1]).length >= 2){
                //do something
            }
        }
    }
}
于 2013-09-10T15:00:50.047 回答