【问题标题】:How to Separate NSString Data如何分离 NSString 数据
【发布时间】:2014-02-07 14:11:24
【问题描述】:

我有一个 NSString* 字符串;

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 应该是:

12 34 56 78

C

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

【问题讨论】:

  • 你能告诉我确切的要求或你有什么样的数据吗?
  • 你好 Samkit Jain,我有一个名为 LayoutString 的 NSArray,其中包含 13 个对象,我尝试了这个对象(LayoutString 中的 NSString* 字符串)
  • 你好 Samkit Jain,我有一个名为 LayoutString 的 NSArray,其中包含 13 个对象我尝试了这个 for(NSString* string in LayoutString) { // 当我在循环中遍历数组时,我得到 // "ID: 12 34 56 78 class:C" first traverse // "SEX:M EYES:BRN HGT:5-09' " 等等所以现在我想在一个字段中显示 ID:12 34 56 78 Class:C 在不同字段中SEX:m 在另一个 EYES:BRN 在另一个 textField 等等 }

标签: ios iphone objective-c nsstring nsscanner


【解决方案1】:

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

【讨论】:

  • 嘿,谢谢你的回复,但是当我调试这个时,NSString *classStr = [myString substringFromIndex:range.location];
  • 我编辑了答案(添加了第一行)...代码正是我在一个小测试应用程序上运行的,而输出正是我相信您正在寻找的。​​span>
【解决方案2】:

正则表达式是要走的路。

首先创建你的 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] => ID 数据, resultArray[1] => 类数据

您可能需要调整正则表达式以跳过空格,但基本上就是这样。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-22
    • 1970-01-01
    • 2012-09-02
    • 2011-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    相关资源
    最近更新 更多