ios - 识别字符串中是否有不需要的字符

标签 ios objective-c

我有一系列UITextFields,使用户能够输入文本。我需要检查文本中是否存在不允许的字符。我可以有一系列的行,例如:

noOfBadChars = [[textBox1.text componentsSeparatedByString:@"&"] count];
noOfBadChars = noOfBadChars + [[textBox2.text componentsSeparatedByString:@"*"] count];
if (noOfBadChars>1)
{
    ….
}

但是有没有一种简单的方法来检查这一点,因为我不想单独检查每个坏字符,或者也许有一种方法可以将条目限制为仅 A 到 Z 字符?

最佳答案

NSCharacterSet *charsToRemove = [NSCharacterSet
    characterSetWithCharactersInString:@"example"];

example 替换为您要删除的字符。

NSString *finalString = [[originalString 
    componentsSeperatedByCharactersInCharacterSet: charsToRemove]
    componentsJoinedByString: @""];

这会将输入的文本替换为删除了所有字符的文本。

否则,如果你只想检查它是否包含坏字符,你可以这样做:

NSArray *temp = [originalString componentsSeperatedByCharactersInCharacterSet:
    charsToRemove];
if ([temp count] > 1) {
    // do stuff
}

NSCharacterSet 有很多常用的常量字符集。

NSCharacterSet *charsToKeep = [NSCharacterSet letterCharacterSet];

这将使 charsToKeep 成为一个仅包含字母的字符集。现在您可以使用 invertedSet 获取逆。

NSCharacterSet *charsToRemove = [charsToKeep 
    invertedSet];

charsToRemove 现在将是一个字符集,其中包含不在 letterCharacterSet 中的每个字符。

你可以在一行中完成所有这些:

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

如果您需要字母和数字,请使用 alphanumericCharacterSet 而不是 letterCharacterSet

official documentation有所有字符集的列表。

关于ios - 识别字符串中是否有不需要的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20647550/

相关文章:

ios - 使用 ELCImagePickerController 选择视频

iOS:如何在使用 Grand Central Dispatch (GCD) 时同步我的 managedObjectContext?

ios nsuserdefaults 同步

objective-c - 将按钮图像设置为 Finder 图标

iOS - 更改 tableview CustomCell 帧大小 - 滚动渲染困惑

ios - NSAttributedString 插入项目符号点?

ios - dateSheet showInView 上的 UIDatePicker 错误

ios - 返回另一个 View Controller IOS7 后如何暂停音频一次

ios - 如何解决多个带有分隔数据的NSURLconnection

iphone - 如何在 iOS 中保存一个充满自定义类的数组?