Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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
Ios 从NSString中删除空格后的字符_Ios_Objective C - Fatal编程技术网

Ios 从NSString中删除空格后的字符

Ios 从NSString中删除空格后的字符,ios,objective-c,Ios,Objective C,我有一些日期字符串,比如:1/1/2010 10:34:11 PM,但我只想要MM/DD/YYYY格式 我已尝试使用以下方法获取“”之前的字符串段: NSRange range = [dates[i] rangeOfString:@" "]; NSString *newString = [dates[i] substringWithRange:NSMakeRange(0,range.location)]; 但是,它不能正确地使用空间作为rangeOfString。我如何才能让它正常工作?谢谢

我有一些日期字符串,比如:1/1/2010 10:34:11 PM,但我只想要MM/DD/YYYY格式

我已尝试使用以下方法获取“”之前的字符串段:

NSRange range = [dates[i] rangeOfString:@" "];

NSString *newString = [dates[i] substringWithRange:NSMakeRange(0,range.location)];

但是,它不能正确地使用空间作为rangeOfString。我如何才能让它正常工作?谢谢

不要这样做

只需使用NSDateFormatter。
从NSString转换为NSDate->change fromat->Convert to string。

不要这样做

NSString *dateString = @"1/1/2010 10:34:11 PM";

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/MM/yyyy hh:mm:ss aa"];

NSDate *date = [formatter dateFromString:dateString];

[formatter setDateFormat:@"dd/MM/yyyy"];

NSString *newDateString = [formatter stringFromDate:date];

// Output: 1/1/2010   
NSLog(@"new date string is %@", newDateString);
只需使用NSDateFormatter。
从NSString转换为NSDate->change fromat->Convert to string。

尝试使用class处理日期格式。

尝试使用class处理日期格式。

虽然您可以使用
NSDateFormatter
,但这是一种与您尝试使用的方法类似的快速而肮脏的方法:

NSString *dateString = @"1/1/2010 10:34:11 PM";

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/MM/yyyy hh:mm:ss aa"];

NSDate *date = [formatter dateFromString:dateString];

[formatter setDateFormat:@"dd/MM/yyyy"];

NSString *newDateString = [formatter stringFromDate:date];

// Output: 1/1/2010   
NSLog(@"new date string is %@", newDateString);

虽然您可以使用
NSDateFormatter
,但与您尝试的方法类似的一种快速而肮脏的方法是:


使用日期格式化程序根据该字符串创建日期。使用另一个创建日期格式的字符串。您发布的代码有什么问题?它应该很好用。您没有解释您得到的结果有什么问题。请使用日期格式化程序从该字符串创建日期。使用另一个创建日期格式的字符串。您发布的代码有什么问题?它应该很好用。您没有解释您得到的结果有什么问题。当您只需要第一个值时,使用
componentsSeparatedByString
是过分的。只需获取第一个分隔符的范围,然后获取子字符串。效率更高。也许吧,但另一方面,它是一行。实际上是两行。当然它可以是一行,就像OP的代码可以是一行一样。这不是重点。您的答案将扫描整个字符串以查找分隔符,然后创建一个包含所有子字符串的数组。你所需要的只是第一个。只获取第一个分隔符(不是全部)的范围并提取单个子字符串要高效得多。不需要数组,不需要扫描整个字符串,不需要大量浪费的子字符串。我理解你的观点,尤其是对于更大的字符串。但在本例中(三个子字符串),您指出了一个微观优化。我否认这个答案既快又脏,并将其作为较少代码行的替代方案提供。当您只需要第一个值时,使用
componentsSeparatedByString
是过分的。只需获取第一个分隔符的范围,然后获取子字符串。效率更高。也许吧,但另一方面,它是一行。实际上是两行。当然它可以是一行,就像OP的代码可以是一行一样。这不是重点。您的答案将扫描整个字符串以查找分隔符,然后创建一个包含所有子字符串的数组。你所需要的只是第一个。只获取第一个分隔符(不是全部)的范围并提取单个子字符串要高效得多。不需要数组,不需要扫描整个字符串,不需要大量浪费的子字符串。我理解你的观点,尤其是对于更大的字符串。但在本例中(三个子字符串),您指出了一个微观优化。我否认这个答案既快又脏,并将其作为一个更少代码行的替代方案提供。当OP想要的只是一个简单的子字符串时,这是一个巨大的过度杀伤力。当OP想要的只是一个简单的子字符串时,这是一个巨大的过度杀伤力。