142

次のような文字列があり@"10/04/2011"、「10」だけを別の文字列に保存したい。どうやってやるの?

4

7 に答える 7

375
NSArray* foo = [@"10/04/2011" componentsSeparatedByString: @"/"];
NSString* firstBit = [foo objectAtIndex: 0];

2018 年 7 月 3 日更新:

質問が Swift タグを取得したので、これを行う Swift の方法を追加する必要があります。それはかなり簡単です:

let substrings = "10/04/2011".split(separator: "/")
let firstBit = substrings[0]

の配列が得られることに注意してくださいSubstring。これらを通常の文字列に戻す必要がある場合は、map

let strings = "10/04/2011".split(separator: "/").map{ String($0) }
let firstBit = strings[0]

また

let firstBit = String(substrings[0])
于 2011-04-27T15:48:37.253 に答える
36

これら 2 のいずれか:

NSString *subString = [dateString subStringWithRange:NSMakeRange(0,2)];
NSString *subString = [[dateString componentsSeparatedByString:@"/"] objectAtIndex:0];

ただし、日付文字列が適切にフォーマットされておらず、日 (またはその月) が 08 ではなく 8 と表示されることがあるため、最初のソリューションが 2 つのソリューションの中で最悪である可能性があることに注意してください。

後者は別の配列に配置して、実際に返されたものの長さを確認できるようにする必要があります。そのため、ソースが何であれ、破損または無効な日付文字列の場合に例外がスローされることはありません。

于 2011-04-27T15:47:44.707 に答える
6

使用する[myString componentsSeparatedByString:@"/"]

于 2011-04-27T15:48:52.320 に答える
5

上記の JeremyP によって提供された優れたソリューションを、以下のより一般的な再利用可能な関数にフォーマットしました。

///Return an ARRAY containing the exploded chunk of strings
+(NSArray*)explodeString:(NSString*)stringToBeExploded WithDelimiter:(NSString*)delimiter
{
    return [stringToBeExploded componentsSeparatedByString: delimiter];
}
于 2013-03-13T14:41:04.783 に答える