gpt4 book ai didi

iOS 6 无法检查仅包含字母数字字符的字符串

转载 作者:行者123 更新时间:2023-11-29 10:39:31 25 4
gpt4 key购买 nike

我正在使用此代码检查用户输入的字符串是否仅包含 iOS6 中的字母数字字符:

NSCharacterSet *alphaSet = [NSCharacterSet alphanumericCharacterSet];
NSString *trimmedString = [text stringByTrimmingCharactersInSet:alphaSet];
BOOL valid = [trimmedString isEqualToString:@""];

但这是运行这段代码的结果:

enter image description here

注意text(待校验字符串)只包含中文字符,经过alphaSet裁剪后变为空字符串,通过校验。

我也试过这段代码,但它也不起作用:

- (BOOL) isAlphaNumeric: (NSString *) text
{
NSCharacterSet *unwantedCharacters =
[[NSCharacterSet alphanumericCharacterSet] invertedSet];

return ([text rangeOfCharacterFromSet:unwantedCharacters].location == NSNotFound) ? YES : NO;
}

我不确定我哪里做错了。在进行检查之前,我是否需要以某种方式对输入文本进行编码?

目前我直接从 iOS6 的 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 的最后一个 replacementText 参数。

谢谢!

最佳答案

问题是 alphanumericCharacterSet 似乎也包含中文字母,所以结果是“正确的”。 Apple 没有以这种方式记录它,但我看到一些帖子(例如来自 GNUStep)似乎表明了这一点。 (另请注意,Apple 确实记录了此字符集包含您可能不想要的字符:通俗地说,此字符集是用作字母表、音节表、象形文字和数字。)。

一个简单但不优雅的解决方法是自己定义字符集,如果你想要的只是英文字母表而没有任何外来字母,如 Üß:

NSCharacterSet *alphaSet = [NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890"];

当您的目标是 iOS >= 7 时,可能会对 URL*AllowedCharacterSet 之一感兴趣。有关详细信息,请参阅 NSCharacterSet documentation

关于iOS 6 无法检查仅包含字母数字字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25200440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com