NSString *mainString =
@"COLOUMN1:Shaddy Van Dust COLOUMN2:245876 COLOUMN3:Info 3\nCOLOUMN1:Da Dirk COLOUMN2:45678 COLOUMN3:xcode\n";
这是我要解析的NSString的一个例子。 我真正的字符串有大约31行。 每个信息都有像“Shady Van Dust”之前的预定版“COLOUMNx”。 (每次都是COLOUMN1,COLOUMN2和COLOUMN3,但之后的每个信息都是不同的,并且长度不同。) 每行以'\ n'结尾。 我的字符串中的最后一个标记是'\ n'。 (除了'\ 0') (使用哪个标记,每一行和我的字符串通常结束都无关紧要,如果这样更容易。)
现在,我想复制COLOUMN1,COLOUMN2&将COLOUMN3转换为临时字符串以使用它。 我想重复,直到我的字符串结束。
我已经尝试过rangeOfString等方法,但是COLOUMN1,* 2& * 3存在于每一行中 - 在同一个字符串中。
我该怎么做?..
答案 0 :(得分:0)
您可以尝试使用:
NSMutableArray *arrayOfStrings = [mainString componentsSeparatedByString:@"\n"];
这会给你一个像这样的NSStrings数组:
0 - > COLOUMN1:Shaddy Van Dust COLOUMN2:245876 COLOUMN3:Info 3
1 - > COLOUMN1:Da Dirk COLOUMN2:45678 COLOUMN3:xcode
2 - > [...]
该数组包含NSStrings,您可以使用[arrayOfStrings objectAtIndex:index];
访问它。
我不确定你能做些什么,但我觉得你越来越接近你想要的单独的琴弦......
希望它有所帮助!
编辑:
你可以更进一步。启动一个遍历数组的循环。
获取索引i
的字符串:
NSString *stringToEdit = [arrayOfStrings objectAtIndex: i];
将您的字符串分成另一个数组:
NSMutableArray *arrayOfLine = [stringToEdit componentsSeparatedByString:@"COLOUMN"];
您现在有了一个新数组:
[@“”,@“1:Shaddy Van Dust”,@“2:245876”,@“3:Info 3”]
请注意开头的空字符串,因为您分割的字符串以分隔符开头,第二个和第三个字符串末尾的空格。
现在再次访问此数组,您将能够处理您的字符串!
祝你好运!答案 1 :(得分:0)
使用componentsSeparatedByString:
。我会解释一个微不足道的方法(可能有更好的方法):
首先将字符串分隔为行数组:
NSArray* rowStrings = [mainString componentsSeparatedByString:@"\n"];
然后再次使用它将数据分成以下列:
NSArray* columnStrings = [[rowStrings objectAtIndex:i] componentsSeparatedByString:@" COLOUMN"];
您必须再次将:
删除为NSString* columnData = [[columnStrings componentsSeparatedByString:@":"] objectAtIndex:1];
答案 2 :(得分:0)
这个怎么样?
NSString *mainString =
@"COLOUMN1:Shaddy Van Dust COLOUMN2:245876 COLOUMN3:Info 3\nCOLOUMN1:Da Dirk COLOUMN2:45678 COLOUMN3:xcode\n";
NSArray *strArray = [mainString componentsSeparatedByString:@"COLOUMN"];
NSMutableDictionary *stringDictionary = [[NSMutableDictionary alloc] init];
NSInteger idx = 1;
for (NSString *thisString in strArray) {
if ([thisString length] > 2) {
NSString *trimmedString = [thisString substringFromIndex:2];
[stringDictionary setValue:[trimmedString stringByReplacingOccurrencesOfString:@"\n" withString:@""]
forKey:[NSString stringWithFormat:@"String%d",idx]];
idx++;
}
}
NSLog(@"stringDictionary = %@", [stringDictionary description]);
输出:
2012-09-13 07:16:02.064 SO String Parsing[21203:f803] stringDictionary = {
String1 = "Shaddy Van Dust ";
String2 = "245876 ";
String3 = "Info 3";
String4 = "Da Dirk ";
String5 = "45678 ";
String6 = xcode;
}