我有NSString
。此NSString
在";"
的不同部分中分开。
我将此NSString
拆分为2个子字符串([componentsSeparatedByString:@";"]
)
现在,我在[componentsSeparatedByString:@";"]
中有一个带NSArray
的子字符串。
在这个子字符串中,我有(有时但并不总是!)a ","
。
当我有","
时,我想在两个“子子串”中填充我的子串并使用这两个子子串......
我该怎么做?
感谢您的回答。
编辑:
你好@Alladinian,谢谢你的回答。 我认为这是我需要的循环。我想用QRCode添加到iPhone地址簿(名字和姓氏)的新联系人。
我的NSString
看起来像是:
NSString *_name = [NSString stringWithFormat:@"%@", code.contact];
我的子字符串如下:
NSArray *subStrings = [code.contact componentsSeparatedByString:@";"];
在我的NSString
中,我(可能但不总是)","
我需要两个不同的输出:一个用于名字,一个用于姓氏。
我知道如何添加由","
分隔的名字和姓氏,但如果我只有名字,我不知道该怎么办。我的应用程序只有一个名字崩溃...
现在,为了解决问题,我在拳头名字字段中发送拳头名字和姓氏......但这对我来说并不完美。
答案 0 :(得分:1)
好的,这里有一些你可以使用的代码。您不能仅使用componentsSeparatedByString
作为名称,因为有4种情况:
代码:
NSString * mecardString = ...your string...
if ( [ mecardString hasPrefix:@"MECARD:" ] ) // is it really a card string? (starts with 'MECARD:')
{
mecardString = [ mecardString substringFromIndex:[ @"MECARD:" length ] ] ; // remove MECARD: from start
NSString * firstName = nil ;
NSString * lastName = nil ;
NSArray * components = [ mecardString componentsSeparatedByString:@";" ] ;
for( NSString * component in components ) // process all parts of MECARD string
{
NSString * lcString = [ component lowercaseString ] ;
if ( [ lcString hasPrefix:@"n:" ] )
{
// handle name ("N:")
NSRange commaRange = [ lcString rangeOfString:@"," ] ;
if ( commaRange.location == NSNotFound )
{
firstName = lcString ;
}
else
{
firstName = [ lcString substringFromIndex:NSMaxRange( commaRange ) ] ;
lastName = [ lcString substringToIndex:commaRange.location ] ;
}
NSCharacterSet * whitespaceCharSet = [ NSCharacterSet whitespaceAndNewlineCharacterSet ] ;
firstName = [ firstName stringByTrimmingCharactersInSet:whitespaceCharSet ] ;
lastName = [ firstName stringByTrimmingCharactersInSet:whitespaceCharSet ] ;
}
else if ( lcString hasPrefix:@"sound:" )
{
// handle name ("SOUND:")
}
// ... write code handle other parts of MECARD... (NICKNAME, BDAY, URL, etc)
else
{
// handle unknown case here
}
}
// you have names here
}