stringByReplacingOccurrencesOfString函数

时间:2013-10-23 08:24:15

标签: ios iphone objective-c xcode nsstring

我是ios开发的新手。

NSString *newString2 = [aString stringByReplacingOccurrencesOfString:@"1," withString:@""];

我的问题是我不知道如何检查任何数字,即stringByReplacingOccurrencesOfString:@"anyInt,“,其中任何Int是从1到N的任何integer数字。

提前致谢!

6 个答案:

答案 0 :(得分:3)

使用正则表达式是最佳解决方案:

NSError *error;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[1-9]" options:NSRegularExpressionCaseInsensitive error:&error];

NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@""];

检查官方NSRegularExpression documentation,还有一个很好的教程here

答案 1 :(得分:3)

正则表达式可能是最简单的解决方案。无论您只想删除单个数字还是多个数字,正则表达式都可以提供帮助。

NSString *aString = @"Apple 10, Banana 3, Carrot 5, Durian 42, Eggplant 4,";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[0-9]+," options:0 error:NULL];    
NSString *newString = [regex stringByReplacingMatchesInString:aString options:0 range:NSMakeRange(0, [aString length]) withTemplate:@""];

NSLog(@"%@", newString);

// result should be "Apple  Banana  Carrot  Durian  Eggplant "

正则表达式起初可能看起来势不可挡或难以理解,但这只是因为它们在搜索和替换文本方面非常强大。有关详细信息,请查看NSRegularExpression文档的overview部分。

答案 2 :(得分:1)

只需要这两行就可以删除字符串中的所有数字。

 NSCharacterSet *numbers = [NSCharacterSet 
    characterSetWithCharactersInString:@"0123456789"];

 NSString *newString = [[tempstr componentsSeparatedByCharactersInSet: numbers] componentsJoinedByString:@""];

答案 3 :(得分:1)

如果您想检查范围然后想要替换,请使用以下api: -

- (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement

答案 4 :(得分:1)

对于大于0的第一部分中的nos,显示第二部分。对于第一部分中的0,显示 - 。

尝试以下代码,

NSString * aString = @"1,10";
NSString *newString2;
NSArray *items = [aString componentsSeparatedByString:@","];

if([[items objectAtIndex:0] integerValue]>0)
  newString2 = [items objectAtIndex:1];
else
    newString2 = @"--";

答案 5 :(得分:0)

为什么要检查Integer是否存在,因为最终你会用''替换它。所以只需使用以下行

NSString *newString2 = [aString stringByReplacingOccurrencesOfString:[NSString StringWithFormat:@"%d", anyInt], withString:@""]; 

以上行将满足您的要求。