当前位置: 首页 > 知识库问答 >
问题:

如何限制UITextField中除点和下划线之外的特殊字符?

彭鸿彩
2023-03-14

如何限制UITextField中除点和下划线之外的特殊字符?

我尝试了下面的代码片段,但运气不好:

#define ACCEPTABLE_CHARECTERS @" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_."

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
         NSCharacterSet *acceptedInput = [NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_CHARECTERS];
        if (![[string componentsSeparatedByCharactersInSet:acceptedInput] count] > 1){
            NSLog(@"not allowed");
            return NO;
        }
        else{
            return YES;
        }
}

共有3个答案

裴威
2023-03-14

雨燕4

let RISTRICTED_CHARACTERS = "'*=+[]\\|;:'\",<>/?%"

UITextField委托方法:

func textField(_ textField: UITextField, shouldChangeCharactersIn _: NSRange, replacementString string: String) -> Bool {
    let set = CharacterSet(charactersIn: RISTRICTED_CHARACTERS)
    let inverted = set.inverted
    let filtered = string.components(separatedBy: inverted).joined(separator: "")
    return filtered != string
}
莘欣怿
2023-03-14

试试这个

NSCharacterSet  *set= [NSCharacterSet symbolCharacterSet];
if ([string rangeOfCharacterFromSet:[set invertedSet]].location == NSNotFound) {
    // valid
} else {
    // invalid
}

你可以自己做一套

NSCharacterSet  *set= [NSCharacterSet characterSetWithCharactersInString:@"<all your symbols you want to ignore>"];
章高朗
2023-03-14

试试下面给出的代码块,它对我来说很好。

SWIFT 3.0

let ACCEPTABLE_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_"

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    let cs = NSCharacterSet(charactersIn: ACCEPTABLE_CHARACTERS).inverted
    let filtered = string.components(separatedBy: cs).joined(separator: "")

    return (string == filtered)
}

目标C

#define ACCEPTABLE_CHARACTERS @" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_."

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string  {
      NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_CHARACTERS] invertedSet];

      NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];

      return [string isEqualToString:filtered];
}

希望它也能对你起作用。

 类似资料:
  • 我有以下正则表达式: 我用它来验证至少一个字母 至少一个大写字母 至少一个数字 至少一个特殊字符 至少8个字符 但除此之外,我还需要限制下划线()。如果我输入password,这是正确的验证,这是真的。如果我输入这也是正确验证,这是错误的。 问题是,当所有规则都得到满足时,正则表达式就通过了。我想要一个规则来限制上面的下划线。 任何帮助都是值得的。

  • 我能够编写一个正则表达式来验证输入框的以下标准。 至少包含14个字符 正则表达式- 然而,这个正则表达式允许其他未提及的特殊字符。我想限制所有特殊字符,除了这些

  • 问题内容: 无论如何(在CSS中)是否要避免在页面..中引入文本和链接的下划线? 问题答案: 使用CSS。这会删除和元素的下划线: 有时您需要覆盖元素的其他样式,在这种情况下,可以在规则上使用修饰符:

  • 我试图将文本视图字符限制为英语。但如果我复制并粘贴非英语字符,我的文本视图就会接收这些条目。谁能帮我解决这个问题。UITextView应该只接受英文字符(包括特殊字符、数字和空格)。或者,当我点击done时,如果textview包含非英语字符,它应该验证并向我发送错误消息。 提前谢谢。 下面是我的代码 此代码不允许我输入空格和特殊字符。需要帮忙解决这个问题。

  • 问题内容: 我正在为我的应用程序创建一个RSS feed文件,在其中我想删除HTML标签,该操作由完成。但是不删除HTML特殊代码字符: 等等 请告诉我任何可用于从字符串中删除这些特殊代码字符的函数。 问题答案: 使用解码或使用删除它们: 编辑:根据雅科的评论的替代 用{2,8}或其他内容替换’+’可能会很好。当出现未编码的“&”时,这将限制替换整个句子的机会。

  • 我希望有一个正则表达式来检查字符串是否包含大小写字母、数字、下划线以及字符限制。这些是字符串中唯一允许的类型。