【问题标题】:Check if strings in an array contain a punctuation or numeric substring?检查数组中的字符串是否包含标点符号或数字子字符串?
【发布时间】:2014-11-11 08:41:27
【问题描述】:

我的方法目前检查数组中是否存在子字符串,但我想知道是否有办法让它也可以处理标点符号和数字。假设我有一个数组:

@[@"apple", @"!!", @"apps!", @"banana"];

我的子字符串是@"!",我希望它吐出:@"!!",和@"apps!"

或者另一个例子:

@[@"apple", @"6:30", @"6 Pizzas", @"26"];

我的子字符串是@"6",我希望它吐出:@"6:30"@"6"@"6 Pizzas"

有没有办法使用NSRange substringRange = [wordsArray rangeOfString:currentWord];来做到这一点

目前无法识别标点符号。 :/

【问题讨论】:

  • 你试过什么?你检查过正则表达式吗?我不知道您是否可以将正则表达式输入 rangeOfString 但您可以遍历列表并使用简单的正则表达式 /\W/g 对任何非单词字符进行测试,或者基本上使用您想要匹配的 /6/g
  • 所以现在我有一个 if、else if、else if 语句来组织我的输出(首先是准确的单词,然后是子字符串开头的单词,最后是子字符串是否存在)。这适用于字母字符和数字。如果子字符串与标点字符集中的字符串匹配,我正在考虑添加另一个 else,将其添加到我的建议数组中,但我不确定这是否是最好的方法。
  • 哈!实际上我想通了,所以我正在做的是使用enumerateSubstringsInRange 块传递当前单词,而我使用NSStringEnumerationByWords 会自动忽略非字母数字值。

标签: objective-c nsstring ios8 substring nsrange


【解决方案1】:

使用NSPredicates 使这项工作变得更加容易。

NSArray *stringArray = @[@"apple", @"!!", @"apps!", @"banana"];

NSPredicate *predicate = [NSPredicate PredicateWithFormat:@"SELF CONTAINS[cd] '%@'",searchChar];
NSArray *resultArray = [stringArray filteredArrayUsingPredicate:predicate];

【讨论】:

    猜你喜欢
    • 2021-12-14
    • 2020-11-28
    • 1970-01-01
    • 1970-01-01
    • 2011-11-09
    • 2013-05-18
    • 2012-06-19
    • 1970-01-01
    • 2021-06-10
    相关资源
    最近更新 更多