拆分 NSString 以访问一个特定的块

我有一个这样的字符串: @"10/04/2011",我只想在另一个字符串中保存“10”。我该怎么做?

140449 次浏览

以下两点:

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

但是请记住,有时候日期字符串的格式不正确,并且一天(或者一个月)显示为8,而不是08,因此第一个可能是两种解决方案中最糟糕的。

后者应该放在一个单独的数组中,这样您就可以实际检查返回的内容的长度,这样在出现损坏或无效的日期字符串的情况下,不会引发任何异常。

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])

使用 [myString componentsSeparatedByString:@"/"]

我已将 很好的解决方案由 JeremyP 提供格式化为一个更通用的可重用函数如下:

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

工作正常

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

目标-c:

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

斯威夫特:

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

Swift 3.0版本

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