如何检查NSString中的前两个字符是否为数字?

时间:2014-08-27 13:25:53

标签: ios objective-c nsstring pattern-matching

我有一些NSString,例如:" 11Dosing"," 10Dosing"," 11Dosing"。

我想检查特定字符串是否以两个数字字符开头。 如何使用if语句检查此情况?

5 个答案:

答案 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]); 

这将创建一个由第一,第三和第四项组成的新数组,因为它们是满足谓词的那些。