删除给定NSRange的子字符串

时间:2010-10-21 18:42:39

标签: iphone objective-c

给定一个String和一个Range是否有任何简单的方法来通过删除传递范围内的String中的字符来获取子字符串?

3 个答案:

答案 0 :(得分:31)

这也应该可以解决问题:

NSString *result = [baseString stringByReplacingCharactersInRange:range withString:@""];

答案 1 :(得分:3)

您可以将子字符串获取到范围的开头,并将子字符串从范围的末尾获取,并将它们连接在一起。

NSString* stringByRemovingRange(NSString* theString, NSRange theRange) {
  NSString* part1 = [theString substringToIndex:theRange.location];
  NSString* part2 = [theString substringFromIndex:theRange.location+theRange.length];
  return [part1 stringByAppendingString:part2];
}

您也可以将其转换为NSMutableString,并使用the -deleteCharactersInRange: method来完成此操作。

NSString* stringByRemovingRange(NSString* theString, NSRange theRange) {
  NSMutableString* mstr = [theString mutableCopy];
  [mstr deleteCharactersInRange:theRange];
  return [mstr autorelease];
}

答案 2 :(得分:-2)

也许你可以使用这段代码: 这会查看一个包含代码的列表:a,b,c,d,... 如果最后一个代码是d ..它将添加代码e。

NSString *alphabet = @"ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    NSUInteger i, count = [lead count];
    for (i = 0; i < count; i++) {
        Listings * l = [lead objectAtIndex:i];
        NSUInteger location = [alphabet rangeOfString:l.code].location + 1;
        if(!([l.code isEqualToString:@"X"]))
        {
            if(!(location -1 == i))
            {
                NSRange range = {location - 2,1};
                NSString *newCode = [alphabet substringWithRange:range];
                l.code = newCode;

            }
        }