[英]Problem with NSRange in Objective-C?
我對NSRange有點問題,或者它只是我使用的錯誤的逗號。
這是我想做的。 我有一個像這樣的字符串:
NSString *mystring = @"/c1blue/c2green/c3yellow/"
如您所見,總是有一個帶有值的命令,並且用“ /”分隔。 現在,我想編寫一個給我一個命令特定值的方法,例如c2,該值為綠色。
首先,我將得到c2的位置:
int beginIndex = [mystring rangeOfString:@"c2"].location;
現在,我需要找到偏移量為“ beginIndex”的“ /”位置。
那就是我不知道怎么做的地方。
非常感謝您的幫助。 謝謝
如何使用NSString
的componentsSeparatedByString:
方法首先將字符串拆分為數組?
這個怎么樣:
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
另一種方法:
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)
查看NSString參考,我認為您需要的是:
- (NSArray *)componentsSeparatedByString:(NSString *)separator
謝謝,
我實際上想出了這個,但它看起來比建議的要復雜:
- (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];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.