如何删除字符串中除字母和数字以外的所有符号?
How delete all symbols from string except letters and numbers?
我正在尝试使用下一个代码:
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[\p{L}[0-9]]+|-" options:NSRegularExpressionCaseInsensitive error:&error];
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@""];
但它不起作用。我使用了这个的不同变体,但也没有成功。
示例文本:
Это тестовый.!!?! ;$%#@@@## (вопрос) номер 1256 - верно.
示例输出:
Это тестовый вопрос номер 1256 - верно
第一次找到 num-alphabet 集:
NSCharacterSet *alphaSet = [NSCharacterSet alphanumericCharacterSet];
第 2 次得到它的反转集,我们将用它作为分隔符:
NSCharacterSet *separatorSet = [alphaSet invertedSet];
3nd 使用分隔符分隔旧字符串,然后使用@"":
将字符重新连接在一起
NSString *newString = [[oldString componentsSeparatedByCharactersInSet: separatorSet]componentsJoinedByString:@""];'
您的正则表达式实际上匹配您要删除的字符,但它已损坏并且甚至没有这样做(由于 "wild" ]
)。
如果您需要删除除字母、数字、连字符和空格之外的所有字符,请使用 @"[^\p{L}\p{M}0-9\s-]+"
。
详情:
[^\p{L}\p{M}0-9\s-]+
- 一个或多个字符不是:
\p{L}
- Unicode 字母
\p{M}
- 变音符号
0-9
- ASCII 数字
\s
- 空格
-
- 文字连字符。
在线查看Objective-C demo:
NSString *text = @"Это тестовый.!!?! ;$%#@@@## (вопрос) номер 1256 - верно";
NSError *error = NULL;
NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:@"[^\p{L}\p{M}0-9\s-]+" options:NSRegularExpressionCaseInsensitive error:&error];
NSString *result = [regexp stringByReplacingMatchesInString:text options:0 range:NSMakeRange(0, [text length]) withTemplate:@""];
NSLog(result);
结果:Это тестовый вопрос номер 1256 - верно
我正在尝试使用下一个代码:
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[\p{L}[0-9]]+|-" options:NSRegularExpressionCaseInsensitive error:&error];
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@""];
但它不起作用。我使用了这个的不同变体,但也没有成功。
示例文本:
Это тестовый.!!?! ;$%#@@@## (вопрос) номер 1256 - верно.
示例输出:
Это тестовый вопрос номер 1256 - верно
第一次找到 num-alphabet 集:
NSCharacterSet *alphaSet = [NSCharacterSet alphanumericCharacterSet];
第 2 次得到它的反转集,我们将用它作为分隔符:
NSCharacterSet *separatorSet = [alphaSet invertedSet];
3nd 使用分隔符分隔旧字符串,然后使用@"":
将字符重新连接在一起NSString *newString = [[oldString componentsSeparatedByCharactersInSet: separatorSet]componentsJoinedByString:@""];'
您的正则表达式实际上匹配您要删除的字符,但它已损坏并且甚至没有这样做(由于 "wild" ]
)。
如果您需要删除除字母、数字、连字符和空格之外的所有字符,请使用 @"[^\p{L}\p{M}0-9\s-]+"
。
详情:
[^\p{L}\p{M}0-9\s-]+
- 一个或多个字符不是:\p{L}
- Unicode 字母\p{M}
- 变音符号0-9
- ASCII 数字\s
- 空格-
- 文字连字符。
在线查看Objective-C demo:
NSString *text = @"Это тестовый.!!?! ;$%#@@@## (вопрос) номер 1256 - верно";
NSError *error = NULL;
NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:@"[^\p{L}\p{M}0-9\s-]+" options:NSRegularExpressionCaseInsensitive error:&error];
NSString *result = [regexp stringByReplacingMatchesInString:text options:0 range:NSMakeRange(0, [text length]) withTemplate:@""];
NSLog(result);
结果:Это тестовый вопрос номер 1256 - верно