Mat*_*ton 48 string iphone replace objective-c
在PHP中我可以这样做:
$new = str_replace(array('/', ':', '.'), '', $new);
Run Code Online (Sandbox Code Playgroud)
...替换字符/的所有实例.用空字符串(删除它们)
我可以在Objective-C中轻松完成吗?或者我必须自己动手?
目前我正在多次拨打电话stringByReplacingOccurrencesOfString:
strNew = [strNew stringByReplacingOccurrencesOfString:@"/" withString:@""];
strNew = [strNew stringByReplacingOccurrencesOfString:@":" withString:@""];
strNew = [strNew stringByReplacingOccurrencesOfString:@"." withString:@""];
Run Code Online (Sandbox Code Playgroud)
谢谢,
亚光
Nic*_*ley 122
这样做效率有点低效:
NSString *s = @"foo/bar:baz.foo";
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"/:."];
s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];
NSLog(@"%@", s); // => foobarbazfoo
Run Code Online (Sandbox Code Playgroud)
看NSScanner和-[NSString rangeOfCharacterFromSet: ...],如果你想多一点有效地做到这一点.
N. *_*ham 27
有些情况下你的方法足够好我认为无光泽.顺便说一下,我觉得最好用
[strNew setString: [strNew stringByReplacingOccurrencesOfString:@":" withString:@""]];
Run Code Online (Sandbox Code Playgroud)
而不是
strNew = [strNew stringByReplacingOccurrencesOfString:@"/" withString:@""];
Run Code Online (Sandbox Code Playgroud)
因为我认为你用NSString覆盖NSMutableString指针,这可能会导致内存泄漏.
最近不得不这样做,并希望分享一个有效的方法:
(假设someText是NSString或text属性)
NSString* someText = @"1232342jfahadfskdasfkjvas12!";
Run Code Online (Sandbox Code Playgroud)
(此示例将从字符串中删除数字)
[someText stringByReplacingOccurrencesOfString:@"[^0-9]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, [someText length])];
Run Code Online (Sandbox Code Playgroud)
请记住,您需要使用Obj-c转义字符来转义正则表达式文字字符:
(obj-c使用双反斜杠来逃避特殊的正则表达式文字)
...stringByReplacingOccurrencesOfString:@"[\\\!\\.:\\/]"
Run Code Online (Sandbox Code Playgroud)
使这个有趣的是NSRegularExpressionSearch选项很少使用,但可以导致一些非常强大的控件:
你可以在这里找到一个很好的iOS正则表达式教程,更多关于regex101.com上的正则表达式
与上面发布的Nicholas基本相同,但是如果你想删除除了一组字符之外的所有内容(比如你想删除不在集合"ABCabc123"中的所有内容),那么你可以执行以下操作:
NSString *s = @"A567B$%C^.123456abcdefg";
NSCharacterSet *doNotWant = [[NSCharacterSet characterSetWithCharactersInString:@"ABCabc123"] invertedSet];
s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];
NSLog(@"%@", s); // => ABC123abc
Run Code Online (Sandbox Code Playgroud)
如果您只需要字母数字,则可用于剥离符号等.
| 归档时间: |
|
| 查看次数: |
76889 次 |
| 最近记录: |