简体   繁体   中英

Delete a sub string given a NSRange

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

这也应该做的伎俩:

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

You could get the substring to the start of the range, and the substring from the end of the range, and concatenate them together.

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

You could also turn it into an NSMutableString, and use the -deleteCharactersInRange: method which does this exactly.

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

Maybe you can use this piece of code: This looks into a list which has a code: a,b,c,d,... and if the last code is a d.. it will add the code 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;

            }
        }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM