2

我有一个给出日期的字符串(如下)

NSString*str1=[objDict objectForKey:@"date"];

 NSLog(@" str values2%@",str1); --> 04-Jan-13

现在问题是我需要"-13"从这里修剪。我知道NSDateFormatter要格式化日期。但我不能在这里这样做。我需要修剪它

为此,我正在使用:-

 NSCharacterSet *charc=[NSCharacterSet characterSetWithCharactersInString:@"-13"];

 [str1 stringByTrimmingCharactersInSet:charc];  

但这不起作用。这不修剪...怎么做...帮助

4

5 回答 5

4

不知道为什么不使用 NSDateFormatter 但这是一种非常具体的方法来解决这个问题(我认为非常糟糕的编码实践):

NSString *theDate = str1;
NSArray *components = [theDate componentsSeparatedByString:@"-"];
NSString *trimmedDate = [NSString stringWithFormat:@"%@-%@",[components objectAtIndex:0],[components objectAtIndex:1]];
于 2013-01-04T11:08:00.903 回答
3

Something like this:

NSString *trimmed = [textStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

or this:

NSString *trimmed = [textStr stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"-13"];
于 2013-01-04T11:10:16.830 回答
3

what you have done is correct. Only thing is stringByTrimmingCharactersInSet returns NSString. So you need to assign this value to NSString, like

str1 = [str1 stringByTrimmingCharactersInSet:charc];
于 2013-01-04T11:11:05.173 回答
3

但这不起作用。这不修剪......

它确实修剪,但由于NSStringimmutable,修剪后的字符串被丢弃,因为您没有将它分配给任何东西。

这会起作用(但不要那样做!)

str1 = [str1 stringByTrimmingCharactersInSet:charc];

您所做的不是修剪,而是采用子字符串。NSString为此提供了更好的方法:

str1 = [str1 substringToIndex:6]; // Take the initial 6 characters
于 2013-01-04T11:13:11.107 回答
1

如果您确定您的字符串始终格式化为“NN-CCC-NN”,您可以只修剪前 6 个字符:

NSString* stringToTrim = @"04-Jan-13";
NSString* trimmedString =  [stringToTrim substringToIndex:6];
NSLog(@"trimmedString: %@", trimmedString); // -> trimmedString: 04-Jan
于 2013-01-04T11:12:46.577 回答