我有一个NSString *字符串;
String =“ID:12 34 56 78 Class:C”
现在我想区分一个变量中的ID数据和另一个变量中的Class数据, 我如何将这两个与单个字符串
分开我用过:
NSScanner* Scanner = [NSSCanner ScannerWithString:@"String"]
NSCharacterSet* seperator = [NSCharacterSet CharacterSetWithCharacterInString:@":"];
NSString* text;
while([Scanner isAtEnd] == NO)
{
[Scanner ScanUpToCharacterFromSet:Seperator intoString:@"text"];
[Scanner scanUpToCharactersFromSet:newLine intoString:NULL];
NSLog(@"%@",text);
}
这不会将我的String与ID和Class分开,告诉我该怎么做 我的O / p应该是:
12 34 56 78
C
这是一个场景我有一些字符串数组,每个我想用另一个关键字分隔我的字符串....
答案 0 :(得分:2)
使用NSString的rangeOfString函数
NSString *myString = @"ID: 12 34 56 78 Class:C";
NSRange range = [myString rangeOfString:@"Class"];
NSString *idStr = [myString substringToIndex:range.location];
NSString *classStr = [myString substringFromIndex:range.location];
NSLog(idStr);
NSLog(classStr);
我在我的日志中得到了这个
2014-02-07 15:56:29.951 Hello[5493:903] ID: 12 34 56 78
2014-02-07 15:56:29.959 Hello[5493:903] Class:C
答案 1 :(得分:0)
正则表达式是可行的方法。
首先创建你的NSRegularExpression:
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"ID:(.*?)Class:(.*?)" options:0 error:&error];
这样你就可以创建一个正则表达式来匹配括号中的内容。然后,将您的常规表达与您的字符串匹配:
NSMutableArray *resultArray = [NSMutableArray arrayWithCapacity:0];
NSArray *matchArray = [regex matchesInString:yourString options:0 range:NSMakeRange(0, [yourString length])];
for(NSTextCheckingResult *result in matchArray)
{
if(result.range.location != NSNotFound)
{
NSInteger rlen = result.numberOfRanges;
for(NSInteger i=1;i<rlen;i++)
{
NSRange range = [result rangeAtIndex:i];
[resultArray addObject:[yourString substringWithRange:range]];
}
}
}
在此之后你会有这个:
resultArray [0] =&gt;身份证数据, resultArray [1] =&gt;班级数据
您可能需要调整正则表达式以跳过空白,但基本上就是这样。