iOS使用字符串索引来复制字符串的手动部分

时间:2012-09-13 11:22:54

标签: iphone ios string parsing indexing

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存在于每一行中 - 在同一个字符串中。

我该怎么做?..

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