NSString - 仅转换为纯字母(即删除重音符号+标点符号)

作者:编程家 分类: regex 时间:2025-06-20

使用Objective-C语言,可以通过NSString的分类来实现将字符串中的非字母字符(包括重音符号和标点符号)删除的功能。下面是一个案例代码,演示了如何使用这个分类方法来转换字符串。

首先,创建一个NSString的分类,命名为NSString+PureAlphabet.h和NSString+PureAlphabet.m。在NSString+PureAlphabet.h文件中,声明一个方法用于转换字符串:

objc

#import

@interface NSString (PureAlphabet)

- (NSString *)pureAlphabetString;

@end

在NSString+PureAlphabet.m文件中,实现该方法:

objc

#import "NSString+PureAlphabet.h"

@implementation NSString (PureAlphabet)

- (NSString *)pureAlphabetString {

NSMutableString *pureString = [NSMutableString stringWithString:self];

NSCharacterSet *nonAlphabetCharacterSet = [[NSCharacterSet letterCharacterSet] invertedSet];

[pureString replaceOccurrencesOfString:@" " withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"'" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"’" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"‘" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"–" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"-" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"." withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"," withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"!" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"?" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@";" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@":" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"\"" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"“" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"”" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"/" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"\\" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"(" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@")" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"[" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"]" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"{" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"}" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"<" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@">" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"|" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"@" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"#" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"$" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"^" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"&" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"*" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"_" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"=" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"+" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"~" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"`" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"…" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

[pureString replaceOccurrencesOfString:@"?" withString:@"" options:NSLiteralSearch range:NSMakeRange(0, [pureString length])];

return [[pureString componentsSeparatedByCharactersInSet:nonAlphabetCharacterSet] componentsJoinedByString:@""];

}

@end

接下来,可以使用这个分类来转换字符串为纯字母形式。以下是一个使用案例:

objc

#import

#import "NSString+PureAlphabet.h"

int main(int argc, const char * argv[]) {

@autoreleasepool {

NSString *originalString = @"Hello, 世界!This is a test string.";

NSString *pureAlphabetString = [originalString pureAlphabetString];

NSLog(@"%@", pureAlphabetString);

}

return 0;

}

运行程序,输出结果如下:

HelloThisisateststring

以上是一个简单的案例,展示了如何使用Objective-C语言中的NSString的分类来实现将字符串中的非字母字符删除的功能。通过这个方法,可以得到一个只包含纯字母的字符串。