2012-06-13 147 views
0
刪除子

我動態追加和的NSString刪除子 -動態添加和NSString的

在具體的行動,我使用追加(我用逗號分隔符,同時增加了新的字符串) -

self.selectedString = [self.selectedString length] < 1 ? newSelectedString 
                 : [self.selectedString stringByAppendingFormat:@",%@",newSelectedString]; 

正在刪除 - 現在,當刪除字符串時,此逗號爲我創建問題。 目前我使用的是解決方案這是 -

self.selectedString = [self.selectedString stringByReplacingOccurrencesOfString:newSelectedString 
                    withString:@""]; 

NSRange rangeSingleComma = [self.selectedString rangeOfString:@","]; 
NSRange rangeDoubleComma = [self.selectedString rangeOfString:@",,"]; 
if (rangeSingleComma.location == [self.selectedString length] - 1) { 
    self.selectedString = [self.selectedString substringToIndex:[self.selectedString length] - 1]; 
} 
if (rangeSingleComma.location == 0) { 
    self.selectedString = [self.selectedString substringFromIndex:1]; 
} 
if (rangeDoubleComma.location != NSNotFound) { 
    self.selectedString = [self.selectedString stringByReplacingOccurrencesOfString:@",," 
                     withString:@","]; 
} 

但是這是一個非常骯髒的方法,可以在任何一個建議的一個很好的方法。

回答

2

是否需要將此逗號分隔的列表存儲爲字符串?相反,嘗試維護NSString的NSArray/NSMutableArray。這可以很容易地添加或刪除任何物品。當你需要數組的逗號分隔字符串表示,只是做:

[self.selectedArray componentsJoinedByString:@","] 

如果你想仍使用self.selectedString財產,只是把上面的代碼行中的一個getter方法:

- (NSString *) selectedString { 
     return [self.selectedArray componentsJoinedByString:@","] 
} 
+0

是啊。這絕對是一個更好的方法,我會用這個。謝謝!! – rishi

5

你可以做這樣的事情

NSString *str = @"aaa,bbb,ccc"; 
NSMutableArray *arr = [[str componentsSeparatedByString:@","] mutableCopy]; 

int indexToRemove = -1; 
for (int i = 0; i < arr.count; i++) { 
    NSString *string = [arr objectAtIndex:i]; 
    if([string isEqualToString:@"aaa"]) 
    { 
     indexToRemove = i; 
     break; 
    } 
} 

if(indexToRemove != -1) 
{ 
    [arr removeObjectAtIndex:indexToRemove]; 
} 

NSString *newString = [arr componentsJoinedByString:@","]; 
+0

+1好的建議,但我喜歡亞當的建議,所以我會採用這種方法。 – rishi