我试图从名字+姓氏中获取名字和姓氏。
int loop=0;
NSMutableString *firstname = [[NSMutableString alloc]init];
NSMutableString *fullName = [[NSMutableString alloc]initWithString:@"Anahita+Havewala"];
for (loop = 0; ([fullName characterAtIndex:loop]!='+'); loop++) {
[firstname appendString:[NSString stringWithCharacters:(const unichar *)[fullName characterAtIndex:loop] length:1]];
}
NSLog(@"%@",firstname);
我尝试从unichar到const unichar *进行类型转换,因为characterAtIndex返回一个unichar但stringWithCharacters接受一个const unichar。
这会导致从较小的整数类型警告转换,并且遇到此行时应用程序崩溃(错误访问)。
为什么在Objective C中字符串操作如此复杂?
答案 0 :(得分:1)
您可以使用componentsSeparatedByString:方法轻松获得名字和上次使用。
NSMutableString *fullName = [[NSMutableString alloc]initWithString:@"Anahita+Havewala"];
NSArray *components = [fullName componentsSeparatedByString:@"+"];
NSString *firstName = components[0];
NSString *lastName = components[1];
注意:您需要进行正确的数组边界检查。您也可以将NSScanner用于相同目的。
答案 1 :(得分:0)
试试这个:
NSMutableString *firstname = [[NSMutableString alloc] init];
NSMutableString *fullName = [[NSMutableString alloc] initWithString:@"Anahita+Havewala"];
for (NSUInteger loop = 0; ([fullName characterAtIndex:loop]!='+'); loop++) {
unichar myChar = [fullName characterAtIndex:loop];
[firstname appendString:[NSString stringWithFormat:@"%C", myChar]];
}
NSLog(@"%@", firstname);