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

时间:2011-04-27 15:46:35

标签: objective-c swift string nsstring

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

7 个答案:

答案 0 :(得分:375)

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

更新7/3/2018:

现在问题已经获得了一个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])

答案 1 :(得分:36)

这两个中的任何一个:

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

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

后者应该放在一个单独的数组中,这样你就可以实际检查返回的东西的长度,这样你就不会在任何来源的日期字符串损坏的情况下抛出任何异常。< / p>

答案 2 :(得分:9)

工作正常

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

答案 3 :(得分:8)

目标-C:

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

夫特:

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

答案 4 :(得分:6)

使用[myString componentsSeparatedByString:@"/"]

答案 5 :(得分:5)

我已将nice solution provided by JeremyP above格式化为下面更通用的可重用函数:

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

答案 6 :(得分:1)

Swift 3.0版本

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