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

这两个中的任何一个:

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

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

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

于 2011-04-27T15:47:44.707 回答
9

它工作正常

NSString *dateString = @"10/10/2010";//Date 
NSArray* dateArray = [dateString componentsSeparatedByString: @"/"];
NSString* dayString = [dateArray objectAtIndex: 0];
于 2013-08-06T14:03:21.800 回答
8

目标-c:

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

迅速:

var day: String = "10/04/2011".componentsSeparatedByString("/")[0]
于 2014-05-10T01:09:49.567 回答
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 回答
1

斯威夫特 3.0 版本

let arr = yourString.components(separatedBy: "/")
let month = arr[0]
于 2017-07-06T12:58:04.100 回答