我正在从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:@","];
}
但这是一个非常肮脏的方法,任何人都可以为此提出一个好方法吗?
你可以做这样的事情
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:@","];
您需要将此逗号分隔的列表存储为字符串吗?相反,尝试维护NSString的NSArray/NSMutableArray。这使得随意添加或删除任何项目变得容易。当您需要数组的逗号分隔字符串表示形式时,只需执行以下操作:
[self.selectedArray componentsJoinedByString:@","]
如果您仍想使用 self.selectedString
属性,只需将上面的代码行放在 getter 方法中:
- (NSString *) selectedString {
return [self.selectedArray componentsJoinedByString:@","]
}