web-dev-qa-db-ja.com

NSStringを分割して特定の1つの部分にアクセスする

次のような文字列があります:@"10/04/2011"そして、別の文字列に「10」のみを保存します。どうやってやるの?

142
CrazyDev
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])
375
JeremyP

次のいずれか2:

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

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

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

36

その作業はうまく

NSString *dateString = @"10/10/2010";//Date 
NSArray* dateArray = [dateString componentsSeparatedByString: @"/"];
NSString* dayString = [dateArray objectAtIndex: 0];
9

Objective-c:

     NSString *day = [@"10/04/2011" componentsSeparatedByString:@"/"][0];

迅速:

     var day: String = "10/04/2011".componentsSeparatedByString("/")[0]
8
l-l

[myString componentsSeparatedByString:@"/"]を使用

6
Julio Gorgé

上記のJeremyPが提供する素敵なソリューション を以下のより一般的な再利用可能な関数にフォーマットしました。

///Return an ARRAY containing the exploded chunk of strings
+(NSArray*)explodeString:(NSString*)stringToBeExploded WithDelimiter:(NSString*)delimiter
{
    return [stringToBeExploded componentsSeparatedByString: delimiter];
}
5
Khayrattee

Swift 3.0バージョン

let arr = yourString.components(separatedBy: "/")
let month = arr[0]
1
Fangming