Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从字符串objective-c检测类型_Objective C_Ios_Types_Type Conversion - Fatal编程技术网

从字符串objective-c检测类型

从字符串objective-c检测类型,objective-c,ios,types,type-conversion,Objective C,Ios,Types,Type Conversion,在Objective-c中,从字符串中检测数据类型的最佳方法是什么 我正在导入CSV文件,但每个值都只是一个字符串 例如,我如何判断“2.0”是一个数字,“伦敦”应被视为一个类别,“6月2日星期一”或“2012年6月2日”是一个日期 在向下游传递数据之前,我需要对数据类型进行一些测试,并确定使用哪种类型。Regex是我唯一可以考虑的事情,但如果您使用mac或iphone,您可能会尝试使用RegexKitLite,例如更新---------- 与我之前的建议不同,尝试以下方法: NSString

在Objective-c中,从字符串中检测数据类型的最佳方法是什么

我正在导入CSV文件,但每个值都只是一个字符串

例如,我如何判断“2.0”是一个数字,“伦敦”应被视为一个类别,“6月2日星期一”或“2012年6月2日”是一个日期


在向下游传递数据之前,我需要对数据类型进行一些测试,并确定使用哪种类型。

Regex是我唯一可以考虑的事情,但如果您使用mac或iphone,您可能会尝试使用RegexKitLite,例如更新---------- 与我之前的建议不同,尝试以下方法:

NSString *csvString = @"333";
NSString *charSet = @"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.,";
NSScanner *typeScanner = [NSScanner scannerWithString: csvString];
[typeScanner setCharactersToBeSkipped: [NSCharacterSet characterSetWithCharactersInString:charSet]];
NSString *checkString = [[NSString alloc] init];
[typeScanner scanString:csvString intoString:&checkString];

if([csvString length] == [checkString length]){

    //the string "csvString" is an integer
}
要检查其他类型(浮点、字符串等),请更改此行(检查
int
type)
NSString*charSet=@“abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz.”
to
NSString*charSet=@“abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz”
(检查
float
type)或
NSString*charSet=@“1234567890”(用于检查仅由字母组成的字符串)

-------初始职位-------

您可以这样做:

NSString *stringToTest = @"123";
NSCharacterSet *intValueSet = [NSCharacterSet decimalDigitCharacterSet];
NSArray *test = [stringToTest componentsSeparatedByCharactersInSet:intValueSet];


if ([test count]==[stringToTest length]+1){

    NSLog(@"It's an int!");
}
else {
    NSLog(@"It's not an int");
}
这适用于没有小数点或逗号作为千位分隔符的数字,如“8493”和“883292837”。我已经测试过了,效果很好

希望这为你提供一个开始!我将尝试找出如何测试带有小数点和字符串的数字


正如Andrew所说,正则表达式可能很适合这样做,但它们有点复杂。

如果是csv,您不知道有关列的一些信息吗?我希望每个列在数据类型上保持一致……是的,这些列在数据类型上应该保持一致,但您对这些列的类型一无所知……或者使用内置的
NSRegularExpression
。谢谢,我将此标记为答案。我想最难的是检测日期。