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

このようなもの:

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

またはこれ:

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

あなたがしたことは正しいです。唯一のものはstringByTrimmingCharactersInSet返品NSStringです。NSStringしたがって、この値をに割り当てる必要があります。

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

しかし、これは機能しません。これはトリミングされません。

トリミングは行いますが、NSString不変であるため、何にも割り当てないため、トリミングされた文字列は破棄されます。

これはうまくいくでしょう(しかし、そのようにしないでください!)

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 に答える