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

Iphone iOS使用字符串索引复制字符串的手动部分,iphone,ios,string,parsing,indexing,Iphone,Ios,String,Parsing,Indexing,这是我想要解析的NSString的一个示例。 我真正的弦大约有31行。 每个信息都有“COLOUMNx”的预修复,就像“Shady Van Dust”之前一样。 (它是everytime column1、column2和column3,但后面的每个信息每次都不同,长度也不同。) 每行以“\n”结尾。 字符串中的最后一个标记是“\n”。(除了“\0”之外) (每行和我的字符串通常以哪个标记结束并不重要,如果这样更容易的话。) 现在,我想将Column1、Column2和Column3之间的每个信息

这是我想要解析的NSString的一个示例。 我真正的弦大约有31行。 每个信息都有“COLOUMNx”的预修复,就像“Shady Van Dust”之前一样。 (它是everytime column1、column2和column3,但后面的每个信息每次都不同,长度也不同。) 每行以“\n”结尾。 字符串中的最后一个标记是“\n”。(除了“\0”之外) (每行和我的字符串通常以哪个标记结束并不重要,如果这样更容易的话。)

现在,我想将Column1、Column2和Column3之间的每个信息复制到一个临时字符串中,以便使用它。 我想重复,直到我的字符串结束

我已经尝试过rangeOfString之类的方法,但是每一行中都有column1、*2和*3——在同一个字符串中

我必须做什么?。

您可以尝试使用:

NSString *mainString =
@"COLOUMN1:Shaddy Van Dust COLOUMN2:245876 COLOUMN3:Info 3\nCOLOUMN1:Da Dirk COLOUMN2:45678 COLOUMN3:xcode\n";
这将为您提供如下NSStrings数组:

0->Column1:Shaddy Van Dust Column2:245876 Column3:Info 3

1->column1:Da Dirk column2:45678 column3:xcode

2->[…]

该数组包含NSStrings,您可以使用
[arrayOfStrings objectAtIndex:index]访问这些字符串

我不确定你能用它做些什么,但我认为你越来越接近于拥有你想要的单独的字符串

希望有帮助

编辑:

你可以更进一步。启动一个穿过阵列的循环

获取索引
i
的字符串:

NSMutableArray *arrayOfStrings = [mainString componentsSeparatedByString:@"\n"];
将字符串分成另一个数组:

NSString *stringToEdit = [arrayOfStrings objectAtIndex: i];
现在您有了一个新阵列:

[@”“@“1:Shaddy Van Dust”、@“2:245876”、@“3:Info 3”]

请注意开头的空字符串,因为您分割的字符串以分隔符开头,第二个和第三个字符串末尾的空格

现在再次访问此数组,您将能够处理字符串


祝你好运

使用
由字符串分隔的组件:
。我将解释一个简单的方法(可能有更好的方法):

首先将字符串分隔为一个行数组,如下所示:

NSMutableArray *arrayOfLine = [stringToEdit componentsSeparatedByString:@"COLOUMN"];
然后再次使用它将数据分隔为列,如下所示:

NSArray* rowStrings = [mainString componentsSeparatedByString:@"\n"];
您必须再次删除
,因为
NSString*columnData=[[columnStrings componentsSeparatedByString:@]:“]objectAtIndex:1]

这个怎么样

NSArray* columnStrings = [[rowStrings objectAtIndex:i] componentsSeparatedByString:@" COLOUMN"];
产出:

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

需要注意的是,在调用ComponentsOperationedByString之前,不需要为ArrayOfString分配一个值。您可以删除
[[NSMutableArray alloc]init]并将其更改为nil或在一行中全部执行,如下所示:
NSMutableArray*arrayOfStrings=[mainString componentsSeparatedByString:@“\n”]是的,我在编辑我的答案时看到了这一点(我目前正在添加一些东西)。谢谢!:)如果您想保留“\n”,请不要通过替换字符串来执行修剪字符串。我们提供了线索,您提供了完整的工作解决方案,lol:)
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;
}