检查 NSString 是否包含来自不同 NSString 的字符

发布于 2024-11-03 11:43:23 字数 540 浏览 3 评论 0原文

我正在寻找一种方法来比较两个字符串,并查看第二个字符串是否包含第一个字符串中列出的字符(字母、数字、其他),让我解释一下:

例如:想象一个仅允许使用数字和“*”的密码: 参考链(一):“*0123456789”NSString格式,无NSArray 工作链 (2) = "156/15615=211" NSString 格式,

我如何知道我的链 2 包含 2 个不在我的链 1 中的字符 (/=)?

为了简化允许的管理字母,我不想使用 NSArray 来管理链,例如函数调用:

BOOL unauthorized_letter_found = check(work_chain, reference_chain);

您必须通过“for”、NSPredicate 等?

PS:我使用的是 MAC 操作系统,而不是 iOS,所以我无法使用 NSRegularExpression

I am looking for a way to compare two strings and see if the second string contains a character (letter, number, other) listed in the first, let me explain:

For example: Imagine a password with only digits and "*" are allowed:
Reference chain (1): "*0123456789" NSString format, no NSArray
Work chain (2) = "156/15615=211" NSString format,

How do I know that my chain 2 contains 2 characters (/=) which are not in my chain 1?

To simplify the management letters allowed, I do not want to use NSArray to manage a chain for example a function call:

BOOL unauthorized_letter_found = check(work_chain, reference_chain);

You it must go through "for", NSPredicate, etc. ?

PS: I'm on MAC OS, not iOS so I can not use NSRegularExpression.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

征棹 2024-11-10 11:43:23

您可以使用字符集,例如使用 -rangeOfCharacterFromSet: 检查是否存在禁止字符:

NSCharacterSet *notAllowed = [[NSCharacterSet 
    characterSetWithCharactersInString:@"*0123456789"] invertedSet];
NSRange range = [inputString rangeOfCharacterFromSet:notAllowed];
BOOL unauthorized = (range.location != NSNotFound);

You could go with character sets, e.g. using -rangeOfCharacterFromSet: to check for the presence of forbidden characters:

NSCharacterSet *notAllowed = [[NSCharacterSet 
    characterSetWithCharactersInString:@"*0123456789"] invertedSet];
NSRange range = [inputString rangeOfCharacterFromSet:notAllowed];
BOOL unauthorized = (range.location != NSNotFound);
昔日梦未散 2024-11-10 11:43:23

如果您想使用 NSPredicate,您可以这样做:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES '[0-9*]+'"];
if ([predicate evaluateWithObject:@"0*2481347*"]) {
  NSLog(@"passes!");
} else {
  NSLog(@"fails!");
}

这是使用 NSPredicate 的内置正则表达式匹配内容。 :)

If you want to use an NSPredicate, you can do:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES '[0-9*]+'"];
if ([predicate evaluateWithObject:@"0*2481347*"]) {
  NSLog(@"passes!");
} else {
  NSLog(@"fails!");
}

This is using NSPredicate's built-in regular expression matching stuff. :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文