Ios 如何分离NSString数据

Ios 如何分离NSString数据,ios,iphone,objective-c,nsstring,nsscanner,Ios,Iphone,Objective C,Nsstring,Nsscanner,我有一个字符串*字符串 String=“ID:12 34 56 78类别:C” 现在我想区分一个变量中的ID数据和另一个变量中的类数据, 如何将这两个字符串与单个字符串分开 我使用了: NSScanner* Scanner = [NSSCanner ScannerWithString:@"String"] NSCharacterSet* seperator = [NSCharacterSet CharacterSetWithCharacterInString:@":"]; NSStrin

我有一个字符串*字符串

String=“ID:12 34 56 78类别:C”

现在我想区分一个变量中的ID数据和另一个变量中的类数据, 如何将这两个字符串与单个字符串分开

我使用了:

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);

 }
这不会将我的字符串与ID和类分开,请告诉我如何才能做到这一点 我的O/p应为:

12345678

C


这是一个场景,我有一个字符串数组,在每个场景中,我想用另一个关键字分隔我的字符串……

使用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

正则表达式是一种发展方向

首先创建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]];
        }
    }
}
NSMutableArray*resultArray=[NSMutableArray阵列容量:0];
NSArray*matchArray=[regex matcheInstalling:yourString选项:0范围:NSMakerRange(0[yourString长度])];
for(匹配数组中的NSTextCheckingResult*结果)
{
if(result.range.location!=NSNotFound)
{
NSInteger rlen=结果.numberOfRanges;

对于(NSInteger i=1;我能告诉我确切的要求或您有什么样的数据吗?你好Samkit Jain,我有一个名为LayoutString的NSArray,包含13个对象,我尝试了这个(NSString*string in LayoutString)你好Samkit Jain,我有一个名为LayoutString的NSArray,包含13个对象,我尝试了这个(NSString*string in LayoutString){//当我在循环中遍历数组时,我得到//“ID:12345678 class:C”第一次遍历//“SEX:M EYES:BRN HGT:5-09'”等等,所以现在我想在一个字段中显示ID:12345678,在不同字段中,class:C,在另一个字段中,SEX:M,在另一个textField中,等等}嘿,谢谢你的回复,但当我调试这个时,NSString*classStr=[myString substringfromfromindex:range.location]上会有信号abrt;我编辑了答案(添加了第一行)…代码正是我在一个小测试应用程序上运行的代码,我相信输出就是你想要的。