NSString componentsSeparatedByString

Nit*_*ish 2 iphone nsstring

我有一个来自服务器的字符串.我正在识别一个特定的子字符串,然后在该子字符串处断开主字符串.

NSString *string = /* getting from server */;
NSString *strAddress = /* Substring of string */;
NSArray *arr = [string componentsSeparatedByString:strAddress];
NSString *strBeforeAddress = [arr objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

strAddress它有前面的东西时,这完全正常.但在某些情况下,它完全给出了一个奇怪的结果.例如,何时

string = @"cxzcvxcv\n14, Beaven Dam Road\nVail, CO81657";
strAddress = @"14, Beaven Dam Road\nVail, CO81657";
Run Code Online (Sandbox Code Playgroud)

我只得到一个对象arr,完整的字符串,我认为是错的.它应该将结果作为2个对象:cxzcvxcvblank object.但是,什么时候

string = @"14, Beaven Dam Road\nVail, CO81657";
strAddress = @"14, Beaven Dam Road\nVail, CO81657";
Run Code Online (Sandbox Code Playgroud)

arr在这种情况下,数组有1个对象,完整的字符串.有人可以解释一下这里发生了什么吗?

Pen*_*One 12

NSString类参考讨论方法componentsSeparatedByString:

数组中的子串按接收器中的顺序显示.相邻的分隔符字符串出现在结果中产生空字符串.类似地,如果字符串以分隔符开头或结尾,则第一个或最后一个子字符串分别为空.例如,这段代码片段:

NSString *list = @"Norman, Stanley, Fletcher";

NSArray *listItems = [list componentsSeparatedByString:@", "];

产生一个数组{ @"Norman", @"Stanley", @"Fletcher" }.

如果列表以逗号和空格开头 - 例如,", Norman, Stanley, Fletcher"- 数组包含以下内容:{ @"", @"Norman", @"Stanley", @"Fletcher" }

如果list没有分隔符 - 例如,"Norman"- 在这种情况下,数组包含字符串本身{ @"Norman" }.

两个测试用例的输出是:

NSString *string = @"cxzcvxcv\n14, Beaven Dam Road\nVail, CO81657";
NSString *strAddress = @"14, Beaven Dam Road\nVail, CO81657";
NSLog(@"%@",[string componentsSeparatedByString:strAddress]);
Run Code Online (Sandbox Code Playgroud)

输出

(
    "cxzcvxcv\n",
    ""
)
Run Code Online (Sandbox Code Playgroud)

正如所料.而对于第二种情况

NSString *string = @"14, Beaven Dam Road\nVail, CO81657";
NSString *strAddress = @"14, Beaven Dam Road\nVail, CO81657";
NSLog(@"%@",[string componentsSeparatedByString:strAddress]);
Run Code Online (Sandbox Code Playgroud)

输出

(
    "",
    ""
)
Run Code Online (Sandbox Code Playgroud)

再次,如预期的那样.我觉得这里没问题.