我有一个来自服务器的字符串.我正在识别一个特定的子字符串,然后在该子字符串处断开主字符串.
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个对象:cxzcvxcv和blank 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)
再次,如预期的那样.我觉得这里没问题.
| 归档时间: |
|
| 查看次数: |
18287 次 |
| 最近记录: |