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

Cra*_*Dev 142 string objective-c nsstring swift

我有一个这样的字符串:@"10/04/2011"我想在另一个字符串中只保存"10".我怎样才能做到这一点?

Jer*_*myP 376

NSArray* foo = [@"10/04/2011" componentsSeparatedByString: @"/"];
NSString* firstBit = [foo objectAtIndex: 0];
Run Code Online (Sandbox Code Playgroud)

更新7/3/2018:

既然问题已经获得了Swift标签,我应该添加Swift方法来做到这一点.它非常简单:

let substrings = "10/04/2011".split(separator: "/")
let firstBit = substrings[0]
Run Code Online (Sandbox Code Playgroud)

虽然注意它给你一个数组Substring.如果您需要将这些转换回普通字符串,请使用map

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

要么

let firstBit = String(substrings[0])
Run Code Online (Sandbox Code Playgroud)

  • @Bobrovsky在一般情况下,最好验证字符串以确保它是一个日期.这只是回答特定问题的一个例子.获得三个日期部分中的任何一个也更为通用. (2认同)
  • @EricLeaf问题是"我只想将10保存在一个字符串中".我可以调用变量.答案对于这个问题是正确的.事实上,问题没有说它是一个约会,所以我修改了答案. (2认同)

Ant*_*udt 36

这两个中的任何一个:

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

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

后者应该放在一个单独的数组中,这样你就可以实际检查返回的东西的长度,这样你就不会得到任何来自任何来源的损坏或无效日期字符串的异常.


小智 9

它的工作正常

NSString *dateString = @"10/10/2010";//Date 
NSArray* dateArray = [dateString componentsSeparatedByString: @"/"];
NSString* dayString = [dateArray objectAtIndex: 0];
Run Code Online (Sandbox Code Playgroud)


l-l*_*l-l 8

Objective-C的:

     NSString *day = [@"10/04/2011" componentsSeparatedByString:@"/"][0];
Run Code Online (Sandbox Code Playgroud)

迅速:

     var day: String = "10/04/2011".componentsSeparatedByString("/")[0]
Run Code Online (Sandbox Code Playgroud)


Jul*_*rgé 6

使用 [myString componentsSeparatedByString:@"/"]


Kha*_*tee 5

我已经将JeremyP提供的优秀解决方案格式化为下面更通用的可重用函数:

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

  • 为什么不直接使用componentsSeparatedByString? (5认同)
  • componentsSeparatedByString在二十年内没有改变.你是否包装所有Apple方法调用以防它们发生变化?你必须打字很多. (3认同)