我有一些NSString
,例如:" 11Dosing"," 10Dosing"," 11Dosing"。
我想检查特定字符串是否以两个数字字符开头。
如何使用if
语句检查此情况?
答案 0 :(得分:2)
使用正则表达式:" ^ \ d \ d":" ^"意味着开始," \ d"表示数字(字符串语法需要" \"必须使用" \"进行转义。)
NSString *string = @"11Dosing"; // Example string for testing, your string here.
NSRange range = [string rangeOfString:@"^\\d\\d" options:NSRegularExpressionSearch];
if (range.location != NSNotFound) {
NSLog(@"Starts with two integers");
}
获得BOOL
结果:
BOOL startsWithTwoIntegers = range.location != NSNotFound;
答案 1 :(得分:1)
你可以使用NSString characterAtIndex:方法来获取角色,然后你就可以检查它是否是一个数值
答案 2 :(得分:0)
您可以使用NSString的(void)getCharacters:(unichar *)buffer range:(NSRange)aRange
。
if ([aString length] >= 2){
unichar buffer[2];
[aString getCharacters:buffer range:NSMakeRange(0,2)]
}
然后通过buffer =>
访问它们if (buffer[0]>='0' && buffer[0]<='9') {//char1 is digit}
if (buffer[1]>='0' && buffer[1]<='9') {//char2 is digit}
答案 3 :(得分:0)
很简单:
if ([[@"11Dosing" substringToIndex:2] integerValue] != 0) {
}
或(将与@“00fsdfs”一起使用)
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
if ([numberFormatter numberFromString:[@"11Dosing" substringToIndex:2]]) {
}
*请注意:如果以“00”开头的字符串与您的情况相关,请使用第二个代码段。
答案 4 :(得分:0)
您还可以使用NSPredicate
使用正常表达式MATCHES
,例如:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES '\\\\d{2}.*'"];
BOOL found = [predicate evaluateWithObject:string];
\d
说&#34;匹配数字&#34; (要在\d
中代表NSString
,您通常会使用\\d
,但因为您在字符串中的字符串中使用此字符,您必须逃脱再次,导致\\\\d
)。 {2}
表示我们正在寻找其中两个。 .*
表示字符串可以以零个或多个任何字符出现结束(即我们不关心两个数字后面的内容)。这样的净效果是&#34;任何以两位数字开头的字符串。&#34;
虽然这是一种采用正则表达式的紧凑方式,但当您处理集合时,它的功能最佳:
NSArray *array = @[@"11Dosing", @"1xDosing", @"10Dosing", @"11Dosing"];
NSArray *arrayOfObjectsWithTwoDigits = [array filteredArrayUsingPredicate:predicate]);
这将创建一个由第一,第三和第四项组成的新数组,因为它们是满足谓词的那些。