【问题标题】:CharacterSet containing all variation of letters包含所有字母变体的字符集
【发布时间】:2017-05-09 18:24:57
【问题描述】:

我正在制作一个用户必须输入全名的注册表单,这意味着此特定文本字段的唯一可接受字符应该是 (A-Z, a-z) 加上“”(空格) 但没有数字,也没有特殊字符,例如 -`+¨¨_{ 等。它还应该接受重音符号,例如:[à, é, û] 以及所有字母的所有其他组合。

我现在拥有的是:

- (BOOL)textField:(UITextField *)field shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)characters {

    NSMutableCharacterSet *mySet = [NSMutableCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZñ. "];

    return ([characters rangeOfCharacterFromSet:[mySet invertedSet]].location == NSNotFound);
}

这很好用,但不包括我需要支持的重音字符,我相信应该有更简单的方法来包括丢失的字符,而不必一次输入一个。

【问题讨论】:

标签: objective-c regex string uitextfield


【解决方案1】:

为什么不使用所有字母的特定字符集,包括所有变音符号?

NSMutableCharacterSet *mySet = [[NSCharacterSet letterCharacterSet] mutableCopy];
[mySet addCharactersInString:@" "];

return ([characters rangeOfCharacterFromSet:[mySet invertedSet]].location == NSNotFound);

这不仅涵盖所有变音符号,还将涵盖所有非英语字母,例如俄语字母表。

【讨论】:

  • 该死...在模拟器上它无法正常工作我只是在设备上尝试过它,但这不包括也应该允许的字符“”(空格)
  • 然后将其添加到字符集中(已编辑)。您也可以添加整个whitespaceCharacterSet。
  • @Sulthan:很好的答案,完美运行。你介意解释一下吗?
  • @TejasK 我不确定需要解释什么。一个包含所有字符的集合,我们在该集合中添加空格字符,然后我们检查字符串是否包含倒置集合中的字符...
  • @Sulthan - 反转 letterCharacterSet 如何允许使用重音字符?即使在应用invertedSet 之后,它仍然允许使用字母吗?
猜你喜欢
  • 2016-12-16
  • 2021-02-22
  • 2013-05-27
  • 2018-04-23
  • 2017-01-08
  • 2011-01-27
  • 1970-01-01
  • 2014-10-27
  • 1970-01-01
相关资源
最近更新 更多