我有包含类型名称的字符串。因此它不是类型的实例,我只有描述类型的字符串值和字符串中的输入文本。
NSString *text = @"1234";
NSString *type = @"integer";
NSString *text = @"hello there";
NSString *type = @"string";
NSString *text = @"true";
NSString *type = @"bool";
如何检查它是否是来自tekst的有效类型。
NSRegularExpression会是正确的方式,或者你会怎么做?
答案 0 :(得分: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.也就是说,如果它是一个字符串,无论它是否为空,你' ll得到0.如果要将'0'作为数字包含,请将'a'设置为YES。此功能在 OSX 平台下进行测试。
答案 1 :(得分:0)
您可以使用NSScanner
,大纲中的算法:
NSScanner
字符串text
的实例
type
字符串的值,调用NSScanner
的相应方法,例如scanInteger:
表示整数,scanString:intoString:
表示布尔值(提示:扫描布尔文字)YES
,请检查isAtEnd
方法以确保扫描值后没有垃圾 HTH