当前位置:  开发笔记 > 编程语言 > 正文

在Objective-C中替换字符串中的多个字符?

如何解决《在Objective-C中替换字符串中的多个字符?》经验,为你挑选了4个好方法。

在PHP中我可以这样做:

$new = str_replace(array('/', ':', '.'), '', $new);

...替换字符/的所有实例.用空字符串(删除它们)

我可以在Objective-C中轻松完成吗?或者我必须自己动手?

目前我正在多次拨打电话stringByReplacingOccurrencesOfString:

strNew = [strNew stringByReplacingOccurrencesOfString:@"/" withString:@""];
strNew = [strNew stringByReplacingOccurrencesOfString:@":" withString:@""];
strNew = [strNew stringByReplacingOccurrencesOfString:@"." withString:@""];

谢谢,
亚光



1> Nicholas Ril..:

这样做效率有点低效:

NSString *s = @"foo/bar:baz.foo";
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"/:."];
s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];
NSLog(@"%@", s); // => foobarbazfoo

NSScanner-[NSString rangeOfCharacterFromSet: ...],如果你想多一点有效地做到这一点.



2> N. R. Gresha..:

有些情况下你的方法足够好我认为无光泽.顺便说一下,我觉得最好用

[strNew setString: [strNew stringByReplacingOccurrencesOfString:@":" withString:@""]];

而不是

strNew = [strNew stringByReplacingOccurrencesOfString:@"/" withString:@""];

因为我认为你用NSString覆盖NSMutableString指针,这可能会导致内存泄漏.


是的,假设`strNew`是一个`NSMutableString`.但是如果你打算使用NSMutableString,你可以做一下`[strNew replaceOccurrencesOfString:@":"withString:@""options:0 range:NSMakeRange(0,[strNew length])]`

3> Tommie C...:

最近不得不这样做,并希望分享一个有效的方法:

(假设someText是NSString或text属性)

NSString* someText = @"1232342jfahadfskdasfkjvas12!";

(此示例将从字符串中删除数字)

[someText stringByReplacingOccurrencesOfString:@"[^0-9]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, [someText length])];

请记住,您需要使用Obj-c转义字符来转义正则表达式文字字符:

(obj-c使用双反斜杠来逃避特殊的正则表达式文字)

...stringByReplacingOccurrencesOfString:@"[\\\!\\.:\\/]" 

使这个有趣的是NSRegularExpressionSearch选项很少使用,但可以导致一些非常强大的控件:

你可以在这里找到一个很好的iOS正则表达式教程,更多关于regex101.com上的正则表达式



4> Stonz2..:

与上面发布的Nicholas基本相同,但是如果你想删除除了一组字符之外的所有内容(比如你想删除不在集合"ABCabc123"中的所有内容),那么你可以执行以下操作:

NSString *s = @"A567B$%C^.123456abcdefg";
NSCharacterSet *doNotWant = [[NSCharacterSet characterSetWithCharactersInString:@"ABCabc123"] invertedSet];
s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];
NSLog(@"%@", s); // => ABC123abc

如果您只需要字母数字,则可用于剥离符号等.

推荐阅读
围脖上的博博_771
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有