从组件separateByString方法获取错误的字符串

时间:2011-03-20 23:25:17

标签: iphone objective-c xcode string

我使用以下代码来获取字符串的标题。一切都在我得到返回的行[s2 objectAtIndex:0]。问题是它只是删除了“&”从字符串而不是在“&”前面获取字符串。例如:

我试图从字符串“Sweat(David Guetta Remix) - Snoop Dogg& David Guetta”获得标题。该方法将返回“Sweat David Guetta”而不是“Sweat”。如果你能看到问题,请指出它,因为它会有很大的帮助!

- (NSString *)getTitleFromString:(NSString *)string {
    NSString *newSongName = [NSString stringWithString:string];
    NSArray *chunks = [newSongName componentsSeparatedByString:@"-"];
    NSString *chunks2s = [chunks objectAtIndex:0];
    NSArray *chunks2 = [chunks2s componentsSeparatedByString:@"("];
    NSString *s = [chunks2 objectAtIndex:0];
    NSArray *s2 = [s componentsSeparatedByString:@"&"];
    return [s2 objectAtIndex:0];
}

编辑-----最终代码:

- (NSString *)getTitleFromString:(NSString *)string {
    NSArray * a = [string componentsSeparatedByString:@"-"];
    NSString *b = [a objectAtIndex:0];
    NSArray *c = [b componentsSeparatedByString:@"("];
    NSString *d = [c objectAtIndex:0];
    NSArray *e = [d componentsSeparatedByString:@"&"];
    if ([e count] > 2) {
        return [e objectAtIndex:0];
    } 
    else {
        return d;
    }
    return @"";
}

1 个答案:

答案 0 :(得分:1)

给定初始字符串"Sweat (David Guetta Remix) - Snoop Dogg & David Guetta"

  • chunks["Sweat (David Guetta Remix) ", " Snoop Dogg & David Guetta"](字符串拆分为“ - ”)

  • chunks2s将是"Sweat (David Guetta Remix) "chunks的第一个元素)

  • chunks2将为"["Sweat ", "David Guetta Remix) "]"(该字符串在开头处分开)

  • s因此将"Sweat "chunks2的第一个元素)

s2s的内容相同,因此该方法应该返回正确的内容。如果不是,那么你的一个假设是错误的。