【问题标题】:How to Split a string in iphone?如何在iphone中拆分字符串?
【发布时间】:2011-04-26 07:43:17
【问题描述】:
AERP|01,KSE;04,NCEL;05,GSE;|<END> 

这是我的字符串,现在我想把它分成两个数组,比如

array1 = 01,04,05。 array2 = KSE,NCEL,GSE

并忽略"AERP|" &amp; "|&lt;END&gt;".

注意:我在目标 c 工作。

【问题讨论】:

  • 您尝试了哪些不起作用的方法,您需要帮助吗?你看过 NSString 类的文档吗?

标签: iphone objective-c arrays string split


【解决方案1】:

假设|;, 是重要性递减的分隔符,我将首先删除开头和结尾,然后分成数字/助记符对,然后将它们分开。它会是这样的:

NSString* input = @"AERP|01,KSE;04,NCEL;05,GSE;|<END>";
NSArray* splits = [input componentsSeparatedByString: @"|"];
// In real life, check that splits has three elements

NSString* body = [splits objectAtIndex: 1];
splits = [body componentsSeparatedByString: @";"];

NSMutableArray* numbers = [[NSMutableArray alloc] init];
NSMutableArray* mnemonics = [[NSMutableArray alloc] init];
for (NSString* item in splits)
{
    NSArray* parts = [item componentsSeparatedByString: @","];
    if ([parts count] == 2)
    {
        [numbers addObject: [parts objectAtIndex: 0]]; // Could convert the part to a number here 
                                                       // with NSDecimalNumber numberWithString: or alternative
        [mnemonics addObject: [parts objectAtIndex: 1]];
    }
}

【讨论】:

    【解决方案2】:

    使用NSStringcomponentsSeparatedByCharactersInSet

    - (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator
    

    要构建自己的NSCharacterSet,请使用NSMutableCharacterSet

    NSMutableCharacterSet *_alnum = [NSMutableCharacterSet characterSetWithCharactersInString@"|"];
    

    【讨论】:

    • 或使用-componentsSeparatedByString:
    【解决方案3】:
    NSString *stringToParse = [string substringWithRange:NSMakeRange(5, [string length] - 7)];
    /* stringToParse = @"01,KSE;04,NCEL;05,GSE" */
    NSArray *keyValuePairs = [stringToParse componentsSeparatedByString:@";"];
    NSMutableArray *indices = [NSMutableArray array];
    NSMutableArray *labels = [NSMutableArray array];
    for (NSString *keyValueString in keyValuePairs) {
        NSArray *keyValuePairing = [keyValueString componentsSeparatedByString:@","]; 
        [indices addObject:[keyValuePairing objectAtIndex:0]];
        [labels addObject:[keyValuePairing objectAtIndex:1]];
    }
    

    【讨论】:

      【解决方案4】:
      NSString *astring=  @"AERP|01,KSE;04,NCEL;05,GSE;|<END>";
          NSArray *aq=[astring componentsSeparatedByString:@"|"];
          NSString *sw=[aq objectAtIndex:1];
          NSArray *aq2=[sw componentsSeparatedByString:@","];
          NSArray *aq3=[[aq2 objectAtIndex:1] componentsSeparatedByString:@";"];
          NSArray *aq4=[[aq2 objectAtIndex:2] componentsSeparatedByString:@";"];
          NSMutableArray *a1,*a2;
          a1=[NSMutableArray array];
          a2=[NSMutableArray array];
          [a1 addObject:[aq2 objectAtIndex:0]];
          [a1 addObject:[aq3 objectAtIndex:1]];
          [a1 addObject:[aq4 objectAtIndex:1]];
          [a2 addObject:[aq3 objectAtIndex:0]];
          [a2 addObject:[aq4 objectAtIndex:0]];
          [a2 addObject:[aq2 objectAtIndex:3]];
      

      修改数组的名称,因为我很匆忙。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-06-26
        • 2017-06-06
        • 2014-12-25
        • 2013-10-30
        • 2011-03-29
        • 2011-12-05
        相关资源
        最近更新 更多