Jef*_*ley 68 cocoa cocoa-touch nsstring nscharacterset
我正在寻找一种快速简便的方法来从中删除非字母数字字符NSString.可能是使用了一个东西NSCharacterSet,但我很累,似乎没有任何东西似乎返回一个只包含字符串中的字母数字字符的字符串.
use*_*008 144
我们可以通过拆分然后加入来做到这一点.对于componentsSeparatedByCharactersInSet,需要OS X 10.5+:
NSCharacterSet *charactersToRemove = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
NSString *strippedReplacement = [[someString componentsSeparatedByCharactersInSet:charactersToRemove] componentsJoinedByString:@""];
Run Code Online (Sandbox Code Playgroud)
Amr*_*fie 21
在Swift中,它componentsJoinedByString被替换为join(...),所以这里只是用空格替换非字母数字字符.
let charactersToRemove = NSCharacterSet.alphanumericCharacterSet().invertedSet
let strippedReplacement = " ".join(someString.componentsSeparatedByCharactersInSet(charactersToRemove))
Run Code Online (Sandbox Code Playgroud)
对于Swift2 ......
var enteredByUser = field.text .. or whatever
let unsafeChars = NSCharacterSet.alphanumericCharacterSet().invertedSet
enteredByUser = enteredByUser
.componentsSeparatedByCharactersInSet(unsafeChars)
.joinWithSeparator("")
Run Code Online (Sandbox Code Playgroud)
如果你只想删除一个字符,例如删除所有返回...
enteredByUser = enteredByUser
.componentsSeparatedByString("\n")
.joinWithSeparator("")
Run Code Online (Sandbox Code Playgroud)
Jef*_*ley 19
我最后做的是创建一个NSCharacterSet和-invertedSet我发现的方法(这是一个奇迹,额外的一小时睡眠对文档阅读能力有什么影响).这是代码片段,假设someString您要从中删除非字母数字字符的字符串:
NSCharacterSet *charactersToRemove =
[[ NSCharacterSet alphanumericCharacterSet ] invertedSet ];
NSString *trimmedReplacement =
[ someString stringByTrimmingCharactersInSet:charactersToRemove ];
Run Code Online (Sandbox Code Playgroud)
trimmedReplacement然后将包含someString字母数字字符.
Swift 3版本的接受答案:
let unsafeChars = CharacterSet.alphanumerics.inverted
let myStrippedString = myString.components(separatedBy: unsafeChars).joined(separator: "")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32020 次 |
| 最近记录: |