Iphone iOS使用字符串索引复制字符串的手动部分
这是我想要解析的NSString的一个示例。 我真正的弦大约有31行。 每个信息都有“COLOUMNx”的预修复,就像“Shady Van Dust”之前一样。 (它是everytime column1、column2和column3,但后面的每个信息每次都不同,长度也不同。) 每行以“\n”结尾。 字符串中的最后一个标记是“\n”。(除了“\0”之外) (每行和我的字符串通常以哪个标记结束并不重要,如果这样更容易的话。) 现在,我想将Column1、Column2和Column3之间的每个信息复制到一个临时字符串中,以便使用它。 我想重复,直到我的字符串结束 我已经尝试过rangeOfString之类的方法,但是每一行中都有column1、*2和*3——在同一个字符串中 我必须做什么?。您可以尝试使用: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 *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;
}