好吧,说我有字符串“hello my name is donald
”我如何从nsstring中删除子字符串?
现在,我想从“hello
”删除一切“is
” 的事情是,“my name
”可以是任何东西,也有可能是“his son
”
所以基本上,只是做stringByReplacingOccurrencesOfString
将无法正常工作。
(我有RegexLite)
我会怎么做呢?
好吧,说我有字符串“hello my name is donald
”我如何从nsstring中删除子字符串?
现在,我想从“hello
”删除一切“is
” 的事情是,“my name
”可以是任何东西,也有可能是“his son
”
所以基本上,只是做stringByReplacingOccurrencesOfString
将无法正常工作。
(我有RegexLite)
我会怎么做呢?
使用如下它会帮助你
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);
以下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
如果你总是知道你的字符串将开始“我的名字是”,然后就是17个字符,包括最后的空间,因此,如果您
NSString * hello = "hello my name is Donald Trump";
NSString * finalNameOnly = [hello substringFromIndex:17];
如果子是永远不变的,你不”不需要,你不应该为此使用正则表达式。 – m0skit0 2012-07-16 09:57:45
你不认真?我;只是用这个字符串作为例子!返回@“唐纳德”帮助没有人,而不是这个问题的重点 – maor10 2012-07-16 22:37:38