如何在NSString中使用stringByTrimmingCharactersInSet

时间:2013-01-04 11:02:56

标签: iphone ios nsstring nscharacterset

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

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

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

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

我正在使用: -

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

 [str1 stringByTrimmingCharactersInSet:charc];  

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

5 个答案:

答案 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