Ios 从第一个空格中拆分NSString
我的应用程序中有一个name文本字段,其中firstname可能是中间名,lastname也可能是。现在我想用第一个空格分割这些组件,即firstname和middlename/lastname之间的空格,这样我就可以把它放到我的模型中 例如: 文本字段文本:约翰·D·索沃斯 字符串1:约翰 第二组:D.播种机 我尝试过使用Ios 从第一个空格中拆分NSString,ios,objective-c,regex,Ios,Objective C,Regex,我的应用程序中有一个name文本字段,其中firstname可能是中间名,lastname也可能是。现在我想用第一个空格分割这些组件,即firstname和middlename/lastname之间的空格,这样我就可以把它放到我的模型中 例如: 文本字段文本:约翰·D·索沃斯 字符串1:约翰 第二组:D.播种机 我尝试过使用[[self components separatedbycharactersinset:[NSCharacterSet whitespaceCharacterSet]]fi
[[self components separatedbycharactersinset:[NSCharacterSet whitespaceCharacterSet]]firstObject];&[[self componentsSeparatedByCharactersInSet:[NSCharacterSet-whitespaceCharacterSet]]lastObject]代码>
但只有当有一个名字而没有中间名时,这些才有效。因为它获取第一个和最后一个对象,而忽略中间名。
那么,我将如何实现我想要的呢 这个方法给你一个数组,所有的单词都被空格分割,这样你就可以把第一个对象作为名字,其余的对象作为中间/最后一个等
NSArray *ar = [self componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSString *firstName = [ar firstObject];
NSMutableString *rest = [[NSMutableString alloc] init];
for(int i = 1; i < ar.count; i++)
{
[rest appendString:[ar objectAtIndex:i]];
[rest appendString:@" "];
}
//now first name has the first name
//rest has the rest
NSArray*ar=[self-componentsSeparatedByCharactersInSet:[NSCharacterSet-whitespaceCharacterSet]];
NSString*firstName=[ar firstObject];
NSMutableString*rest=[[NSMutableString alloc]init];
对于(int i=1;i
可能有更简单的方法,但这是一种方法
希望能有帮助
丹尼尔
…条件赋值(rangeOfSpace.location==NSNotFound?:
)可防止索引越界错误 我认为下面这个例子解决了你的问题
请记住,您可以直接从数组中赋值,而无需转换为字符串
以下是一个例子:
NSString *textField = @"John D. Sowers";
NSArray *fullName = [textField componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" "]];
if (fullName.count)
{
if (fullName.count > 2)
{
NSLog(@"Array has more than 2 objects");
NSString *name = fullName[0];
NSLog(@"Name:%@",name);
NSString *middleName = fullName[1];
NSLog(@"Middle Name:%@",middleName);
NSString *lastName = fullName[2];
NSLog(@"Last Name:%@",lastName);
}
else if(fullName.count == 2)
{
NSLog(@"Array has 2 objects");
NSString *name = fullName[0];
NSLog(@"Name:%@",name);
NSString *lastName = fullName[1];
NSLog(@"Last Name:%@",lastName);
}
else
{
NSString *name = fullName[0];
}
}
我发现这是最有力的:
NSString *fullNameString = @"\n Barnaby Marmaduke \n \n Aloysius ";
NSMutableArray *nameArray = [[fullNameString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] mutableCopy];
[nameArray removeObject:@""];
NSString *firstName = [nameArray firstObject];
if(nameArray.count)
{
[nameArray removeObjectAtIndex:0];
}
NSString *nameRemainder = [nameArray componentsJoinedByString:@" "];
鲍勃是你叔叔
NSString *fullNameString = @"\n Barnaby Marmaduke \n \n Aloysius ";
NSMutableArray *nameArray = [[fullNameString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] mutableCopy];
[nameArray removeObject:@""];
NSString *firstName = [nameArray firstObject];
if(nameArray.count)
{
[nameArray removeObjectAtIndex:0];
}
NSString *nameRemainder = [nameArray componentsJoinedByString:@" "];