【发布时间】:2015-11-26 15:20:52
【问题描述】:
假设我有一个txt文件,数据如下;
12345,123,98765,JOHN,RL,s/w
12345,123,98765,SAM,RL,s/w
12345,123,98765,MIC,RL,s/w
12345,123,98765,MIC,RL,s/w
12345,123,98765,MIC,RL,s/w
12345,123,98765,MIC,RL,s/w
12345,123,98765,MIC,RL,s/w
12345,123,98765,AMI,RL,s/w
12345,123,98765,THIMOTHY,RL,s/w
它捆绑在我的应用程序中,我正在将数据读取到 nsstring。我正在传递一个搜索词,比如“MIC”。当我通过这个搜索词时,我想获取具有搜索词的行并从字符串中删除所有其他行。
我尝试了以下代码:
NSString *searchTerm = @"MIC";
NSRange rangess = [dataToBeParsed rangeOfString:searchTerm];
NSRange range = [dataToBeParsed rangeOfString:@"" options:NSBackwardsSearch range:rangess];
NSLog(@"range.location: %lu", range.location);
NSString *substring = [dataToBeParsed substringFromIndex:range.location+1];
NSLog(@"substring: \n%@'", substring);
我能够找到搜索词的位置并清除字符串内容直到搜索位置。但我想得到完整的线路。
注意:在我的原始文档中,具有搜索词的行将与文档中一样连续列出。
请帮忙。
【问题讨论】:
-
将其保存在字符串中是不正确的。你想要一个由字符串数组组成的数组。
-
您可以使用正则表达式:
^(.*(?:MIC).*)$。只需将MIC替换为您要查找的任何内容。评估这个表达式会给你完整的行。 -
正如@trojanfoe 所说,使用 NSArray 的 NSArray 应该会更好,尤其是当它似乎是“以逗号作为分隔符”的 CSV 时。
-
是的,我明白你的意思。但是我的原始文档将缺少 2 个以上的条目。所以使用 componentsSeperatedByString:@"\n" 加载到数组中需要时间。
-
@akashivskyy 也尝试过,但我们的目标是针对 iPod touch 第 4 代设备的应用程序。所以它需要更多的时间。 :(
标签: ios objective-c nsstring substring nsrange