我正在尝试检查用户是否在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的内容,并检查用户是否输入了两个单词,每个单词的长度至少为两个字符。任何人都可以看到它的错误吗?
感谢所有回复的人。
答案 0 :(得分:2)
最好的起点是使用NSString
方法componentsSeparatedByCharactersInSet:
将文本字段内容拆分为NSArray
个字符串。
然后你可以确保数组至少有2个元素(单词)和 iterate 使用键值编码来确保每个元素至少有两个字符:
NSArray *words = [textField.text componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
if (words.count == 2)
{
NSNumber *lengthOfShortestWord = [words valueForKeyPath:@"@min.length"];
if (lengthOfShortestWord.intValue == 2)
{
// Success !
}
}
答案 1 :(得分:2)
让我们首先尝试了解你在做什么:
您正在使用stringByTrimmingCharactersInSet
方法。来自Apple Docs
返回通过从接收器的两端移除而创建的新字符串 包含在给定字符集中的字符。
这意味着它从两端删除字符集后返回单个字符串。在您的情况下,您提供了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");
}
}
答案 2 :(得分: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
}
}
}
}