首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查NSString是否仅为字母

检查NSString是否仅为字母
EN

Stack Overflow用户
提问于 2015-06-08 07:11:35
回答 2查看 3.1K关注 0票数 1

确保NSString只包含字母A-Z和a-z的最佳方法是什么?

我尝试了下面的代码,但由于某些原因,它不能工作:

代码语言:javascript
运行
复制
NSString *myegex = @"[A-Za-z]";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", myregex];
if (![emailTest evaluateWithObject:self.initials.text])  {
     // print error
     return;
}
EN

回答 2

Stack Overflow用户

发布于 2015-06-08 07:23:47

您可以通过一种更简单的方法来完成此操作,方法是创建自己的NSCharacterSet,然后使用rangeOfCharacterFromSet:根据该集合检查字符串

代码语言:javascript
运行
复制
//Create character set
NSCharacterSet *validChars = [NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"];

//Invert the set
validChars = [validChars invertedSet];

//Check against that
NSRange  range = [myString rangeOfCharacterFromSet:validChars];
if (NSNotFound != range.location) {

 //invalid chars found

}
票数 14
EN

Stack Overflow用户

发布于 2015-06-08 08:31:05

我不确定Objective-C正则表达式引擎是如何工作的,但您可以利用锚点^$来检查字符串是否以字母开头和结尾,方法是使用下面的正则表达式:

代码语言:javascript
运行
复制
^[A-Za-z]+$

使用你的代码,将会是:

代码语言:javascript
运行
复制
NSString *myegex = @"^[A-Za-z]+$";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", myregex];
if (![emailTest evaluateWithObject:self.initials.text])  {
     // print error
     return;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30699407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档