2011-01-06 7 views
2

私はNSRangeにちょっとした問題があります。Objective-CのNSRangeに問題がありますか?

ここは私がしたいことです。あなたがそこにコマンドが値を常にであり、「/」で区切られていること見ることができるように

NSString *mystring = @"/c1blue/c2green/c3yellow/" 

:私はこのような文字列を持っています。今私はコマンドに特定の値を与えるmthodを書こうとしています。 c2であり、これは緑色である。

まず、私はC2の位置になるだろう:

int beginIndex = [mystring rangeOfString:@"c2"].location; 

を今、私は「beginIndexの」オフセットと「/」の位置を見つける必要があります。

ここで私はどのようにわからないのですか?

ヘルプは感謝しています。 ありがとう

答えて

1

別のアプローチ:

NSString *getCommand(NSString *string, NSString *identifier) 
{ 
    for (NSString *component in [string componentsSeparatedByString:@"/"]) 
    { 
     NSRange range=[component rangeOfString:identifier]; 
     if (range.location==0) { 
      return [component substringFromIndex:range.length]; 
     } 
    } 
    return nil; 
} 

テストコード:

NSString *mystring = @"/c1blue/c2green/c3yellow/"; 
NSLog(@"%@", getCommand(mystring, @"c2")); 
NSLog(@"%@", getCommand(mystring, @"c3")); 
NSLog(@"%@", getCommand(mystring, @"c4")); 

結果:

2011-01-06 15:31:13.706 so[3949:a0f] green 
2011-01-06 15:31:13.711 so[3949:a0f] yellow 
2011-01-06 15:31:13.712 so[3949:a0f] (null) 
3

componentsSeparatedByString:メソッドをNSStringとして使用して文字列を最初に配列に分割する方法はありますか?

0

ルックNSString参照で、私は何が必要だと思うのです:

2

- (NSArray *)componentsSeparatedByString:(NSString *)separatorこれはどう:

NSString *mystring = @"/c1blue/c2green/c3yellow/"; 
NSMutableDictionary *commands=[NSMutableDictionary dictionary]; 
for (NSString *component in [mystring componentsSeparatedByString:@"/"]) 
{ 
    // assuming your identifier is always 2 characters... 
    if ([component length]>2) { 
     [commands setObject:[component substringFromIndex:2] forKey:[component substringToIndex:2]]; 
    } 
} 
NSLog(@"commands %@", commands); 
NSLog(@"command c2: %@", [commands objectForKey:@"c2"]); 

結果:

2011-01-06 15:21:27.117 so[3741:a0f] commands { 
    c1 = blue; 
    c2 = green; 
    c3 = yellow; 
} 
2011-01-06 15:25:26.488 so[3801:a0f] command c2: green 
0

おかげで、

私は実際にこの1を思い付いたが、それは示唆したものよりも複雑になります。

- (NSString *) CommSubStr:(NSString *) commandString withPattern:(NSString *) command 
{ 
    int beginIndex = [commandString rangeOfString:command].location; 
    if (beginIndex == -1) 
    { 
     return @""; 
    } else 
    { 
     NSRange subStringRange = NSMakeRange(beginIndex + [command length], [commandString length]-(beginIndex+[command length])); 
     NSString *newString = [commandString substringWithRange:subStringRange]; 

     int endIndex = [newString rangeOfString:@"/"].location; 
     NSRange finalSubStringRange = NSMakeRange(0, endIndex); 

     return [newString substringWithRange:finalSubStringRange]; 
    } 
} 
関連する問題