2014-01-31 97 views
-1

我有字符串包含類型的名稱。因此,它不是類型上的實例,我只有字符串值描述類型和字符串中的輸入文本。類型檢查字符串值,如「字符串」&「整數」和「布爾」

NSString *text = @"1234"; 
NSString *type = @"integer"; 

NSString *text = @"hello there"; 
NSString *type = @"string"; 

NSString *text = @"true"; 
NSString *type = @"bool"; 

你會如何檢查它是否是從tekst有效的類型。

NSRegularExpression會是正確的方式,或者你會怎麼做?

+0

我想我會比較文字字符串。 (或者你可以做'[@「_ integer_string_bool_」rangeOfString:[NSString stringWithFormat:@「_%@ _」,type]]',看看結果是不是NSNotFound。) –

回答

0

您可以使用NSScanner,輪廓的算法:

  • text字符串
  • 根據您type字符串的值創建的NSScanner實例調用NSScanner適當的方法,例如scanInteger:的整數和scanString:intoString:爲布爾(提示:掃描的布爾文字)
  • 如果掃描方法返回YES然後檢查isAtEnd方法,以確保沒有垃圾後掃描值

HTH

1

我有以下幾行代碼。

- (NSInteger)getStringType:(NSString *)value :(BOOL)a { 
    if ([value isEqualToString:@"true"] || [value isEqualToString:@"false"]) { 
     return 2; 
    } 
    else { 
     // a: Whether to accept 0 
     NSRange range; 
     NSString *expression = @"^[1-9][0-9]*$"; 
     range = [value rangeOfString:expression options:NSRegularExpressionSearch]; 
     if (range.location != NSNotFound) { 
      return 1; 
     } else { 
      if (a == YES) { 
       if (value.length == 1 && [value isEqualToString:@"0"]) { 
        return 1; 
       } else { 
        return 0; 
       } 
      } 
      else { 
       return 0; 
      } 
     } 
    } 
} 

如果字符串(值)布爾值,它應該返回2.如果它是一個整數,它應該返回1,否則,它將返回0。也就是說,如果它是一個字符串,它是否是空的或不,你會得到0.如果你想包括'0'作爲一個數字,將'a'設置爲YES。該功能在OSX平臺上進行測試。