我有一个字符串给出日期(下面)
NSString*str1=[objDict objectForKey:@"date"];
NSLog(@" str values2%@",str1); --> 04-Jan-13
现在问题是我需要从这里修剪"-13"
。我知道NSDateFormatter
格式化日期。但我不能在这里做。我需要修剪
我正在使用: -
NSCharacterSet *charc=[NSCharacterSet characterSetWithCharactersInString:@"-13"];
[str1 stringByTrimmingCharactersInSet:charc];
但这不起作用。这不会修剪......怎么做......帮助
答案 0 :(得分:4)
不确定为什么不使用NSDateFormatter,但这是一种非常具体的方法来解决这个问题(在我看来非常糟糕的编码实践):
NSString *theDate = str1;
NSArray *components = [theDate componentsSeparatedByString:@"-"];
NSString *trimmedDate = [NSString stringWithFormat:@"%@-%@",[components objectAtIndex:0],[components objectAtIndex:1]];
答案 1 :(得分:3)
你所做的是正确的。只有stringByTrimmingCharactersInSet
返回NSString
。因此,您需要将此值分配给NSString
,例如
str1 = [str1 stringByTrimmingCharactersInSet:charc];
答案 2 :(得分:3)
但这不起作用。这不会修剪......
它确实修剪,但由于NSString
是不可变的,修剪后的字符串会被丢弃,因为你没有把它分配给任何东西。
这会起作用(但不要这样做!)
str1 = [str1 stringByTrimmingCharactersInSet:charc];
你做的不是修剪,而是采取子串。 NSString
为此提供了更好的方法:
str1 = [str1 substringToIndex:6]; // Take the initial 6 characters
答案 3 :(得分:2)
这样的事情:
NSString *trimmed = [textStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
或者这个:
NSString *trimmed = [textStr stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"-13"];
答案 4 :(得分:1)
如果你确定你的字符串总是格式化为“NN-CCC-NN”,你可以修剪前6个字符:
NSString* stringToTrim = @"04-Jan-13";
NSString* trimmedString = [stringToTrim substringToIndex:6];
NSLog(@"trimmedString: %@", trimmedString); // -> trimmedString: 04-Jan