2011-03-20 46 views
0

我正在使用以下代码来获取字符串的标题。一切工作到我得到返回的行[s2 objectAtIndex:0]。问题在于它只是从字符串中删除“&”,而不是在“&”之前获取字符串。例如:从组件获取错误的字符串separatedByString方法

我试图从字符串“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 @""; 
} 
+0

您是否调试过并确认名为“s”的变量中的字符串实际上是“Sweat&David Guetta”? – 2011-03-20 23:28:56

+0

我无法确认。我只是NSLogged“s”,它调试:汗(换行) &(换行) 大卫Guetta – 2011-03-20 23:31:17

+0

s2中的所有元素是什么? – 2011-03-20 23:37:12

回答

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第一个元素)

s2将与s一样,所以该方法应该返回正确的东西。如果不是,那么你的一个假设是错误的。

+0

事实证明,我使用的其他代码存在问题。更新代码已发布在问题中。 – 2011-03-21 19:10:55