2012-07-16 60 views
1

好吧,说我有字符串“hello my name is donald我如何从nsstring中删除子字符串?

现在,我想从“hello”删除一切“is” 的事情是,“my name”可以是任何东西,也有可能是“his son

所以基本上,只是做stringByReplacingOccurrencesOfString将无法​​正常工作。

(我有RegexLite)

我会怎么做呢?

+0

如果子是永远不变的,你不”不需要,你不应该为此使用正则表达式。 – m0skit0 2012-07-16 09:57:45

+0

你不认真?我;只是用这个字符串作为例子!返回@“唐纳德”帮助没有人,而不是这个问题的重点 – maor10 2012-07-16 22:37:38

回答

2

使用如下它会帮助你

NSString *hello = @"his is name is isName"; 
NSRange rangeSpace = [hello rangeOfString:@" " 
            options:NSBackwardsSearch]; 
NSRange isRange = [hello rangeOfString:@"is" 
           options:NSBackwardsSearch 
           range:NSMakeRange(0, rangeSpace.location)]; 

NSString *finalResult = [NSString stringWithFormat:@"%@ %@",[hello substringToIndex:[hello rangeOfString:@" "].location],[hello substringFromIndex:isRange.location]]; 
NSLog(@"finalResult----%@",finalResult); 
0

以下NSString类别可能会对您有所帮助。它适用于我,但不是由我创建的。感谢作者。

的NSString + Whitespace.h

#import <Foundation/Foundation.h> 

@interface NSString (Whitespace) 

- (NSString *)stringByCompressingWhitespaceTo:(NSString *)seperator; 

@end 

的NSString + Whitespace.m

import "NSString+Whitespace.h" 

@implementation NSString (Whitespace) 
- (NSString *)stringByCompressingWhitespaceTo:(NSString *)seperator 
{ 
    //NSArray *comps = [self componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
    NSArray *comps = [self componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

    NSMutableArray *nonemptyComps = [[NSMutableArray alloc] init]; 

    // only copy non-empty entries 
    for (NSString *oneComp in comps) 
    { 
     if (![oneComp isEqualToString:@""]) 
     { 
      [nonemptyComps addObject:oneComp]; 
     } 

    } 

    return [nonemptyComps componentsJoinedByString:seperator]; // already marked as autoreleased 
} 
@end 
0

如果你总是知道你的字符串将开始“我的名字是”,然后就是17个字符,包括最后的空间,因此,如果您

NSString * hello = "hello my name is Donald Trump"; 
NSString * finalNameOnly = [hello substringFromIndex:17];