私は段落を単語に変換していますそれはのような多くの特殊文字を含んでいます
" , " . `
nsstringでこの文字を削除し、nsstringでアルファベットのみを取得する方法
ex「新規」から新規//the special characters are change
私は段落を単語に変換していますそれはのような多くの特殊文字を含んでいます
" , " . `
nsstringでこの文字を削除し、nsstringでアルファベットのみを取得する方法
ex「新規」から新規//the special characters are change
NSString *unfilteredString = @"!@#$%^&*()_+|abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
NSCharacterSet *notAllowedChars = [[NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"] invertedSet];
NSString *resultString = [[unfilteredString componentsSeparatedByCharactersInSet:notAllowedChars] componentsJoinedByString:@""];
NSLog (@"Result: %@", resultString);
これを試してみてください
これに対処する方法はたくさんあります。例として、正規表現を使用したソリューションを次に示します。これは単なる例です。削除する特殊文字の全範囲がわかりません。
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[])
{
@autoreleasepool {
NSRegularExpression *expression = [NSRegularExpression regularExpressionWithPattern:@"[,\\.`\"]"
options:0
error:NULL];
NSString *sampleString = @"The \"new\" quick brown fox, who jumped over the lazy dog.";
NSString *cleanedString = [expression stringByReplacingMatchesInString:sampleString
options:0
range:NSMakeRange(0, sampleString.length)
withTemplate:@""];
printf("cleaned = %s",[cleanedString UTF8String] );
}
return 0;
}
@MadhuPの選択された回答からの@RostyslavDruzhchenkoのコメントによると:
NSString *unfilteredString = @"!@#$%^&*()_+|abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
NSCharacterSet *notAllowedChars = [[NSCharacterSet alphanumericCharacterSet] invertedSet];
NSString *escapedString = [[unfilteredString componentsSeparatedByCharactersInSet:notAllowedChars] componentsJoinedByString:@""];
NSLog (@"Result: %@", escapedString);
alphanumericCharacterSet
これは、複数の国の文字セットを処理するために使用する答えです。
SWIFTで受け入れられた回答(ただし、SWIFTYの方法ではありません):
let notAllowedCharactersSet = NSCharacterSet(charactersInString: "ABCDEFGHIJKLMNOPQRSTUVWXYZ").invertedSet
let filtered = (stringToFilter.componentsSeparatedByCharactersInSet(notAllowedCharactersSet) as NSArray).componentsJoinedByString("")
よりエレガントな解決策があると確信していますが、Swiftでこれを行おうとしている人のために、ユーザーの電話番号に特殊文字が含まれていないことを確認するために私が行ったことは次のとおりです。
var phone = "+1 (555) 555 - 5555"
var removeChars: NSCharacterSet = NSCharacterSet(charactersInString: "1234567890").invertedSet
var charArray = phone.componentsSeparatedByCharactersInSet(removeChars)
var placeholderString = ""
var formattedPhoneNumber: String = placeholderString.join(charArray).stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
はstringByTrimmingCharactersInSet
必要ないかもしれません。