から英数字以外の文字をすばやく簡単に削除する方法を探していNSString
ます。おそらく、を使用したものNSCharacterSet
ですが、私は疲れていて、文字列に英数字のみを含む文字列を返すものは何もないようです。
質問する
34436 次
9 に答える
148
分割してから結合することでこれを行うことができます。componentsSeparatedByCharactersInSet には OS X 10.5 以降が必要です。
NSCharacterSet *charactersToRemove = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
NSString *strippedReplacement = [[someString componentsSeparatedByCharactersInSet:charactersToRemove] componentsJoinedByString:@""];
于 2011-07-02T02:20:14.663 に答える
21
Swift では、componentsJoinedByString
は に置き換えられるjoin(...)
ため、ここでは英数字以外の文字をスペースに置き換えるだけです。
let charactersToRemove = NSCharacterSet.alphanumericCharacterSet().invertedSet
let strippedReplacement = " ".join(someString.componentsSeparatedByCharactersInSet(charactersToRemove))
Swift2 の場合 ...
var enteredByUser = field.text .. or whatever
let unsafeChars = NSCharacterSet.alphanumericCharacterSet().invertedSet
enteredByUser = enteredByUser
.componentsSeparatedByCharactersInSet(unsafeChars)
.joinWithSeparator("")
1文字だけを削除したい場合、たとえば、すべてのリターンを削除します...
enteredByUser = enteredByUser
.componentsSeparatedByString("\n")
.joinWithSeparator("")
于 2014-10-13T10:25:16.733 に答える
19
私が最終的にやったのは、NSCharacterSet と-invertedSet
私が見つけたメソッドを作成することでした (ドキュメントを読む能力のために余分な 1 時間の睡眠が何をするのか不思議です)。someString
これが英数字以外の文字を削除する文字列であると仮定した場合のコード スニペットは次のとおりです。
NSCharacterSet *charactersToRemove =
[[ NSCharacterSet alphanumericCharacterSet ] invertedSet ];
NSString *trimmedReplacement =
[ someString stringByTrimmingCharactersInSet:charactersToRemove ];
trimmedReplacement
someString
の英数字が含まれます。
于 2009-11-01T16:01:01.597 に答える
0
以下は、拡張機能としてのCameron のカテゴリのSwift バージョンです。
extension String {
func stringByStrippingCharactersInSet(set:NSCharacterSet) -> String
{
return (self.componentsSeparatedByCharactersInSet(set) as NSArray).componentsJoinedByString("")
}
func stringByCollapsingWhitespace() -> String
{
var components:NSArray = self.componentsSeparatedByCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
let predicate = NSPredicate(format: "self <> ''", argumentArray: nil)
components = components.filteredArrayUsingPredicate(predicate)
return components.componentsJoinedByString(" ")
}
}
于 2015-01-26T00:50:54.760 に答える