Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将NSRange与此NSString一起使用?_Ios_Objective C_Nsrange - Fatal编程技术网

Ios 如何将NSRange与此NSString一起使用?

Ios 如何将NSRange与此NSString一起使用?,ios,objective-c,nsrange,Ios,Objective C,Nsrange,我有以下NSString: productID = @"com.sortitapps.themes.pink.book"; 最后,“书”可以是任何东西。。。。“音乐”、“电影”、“游戏”等 我需要找到单词pink之后的第三个句号,这样我就可以用其他单词替换最后一个“book”单词。如何使用NSRange执行此操作?基本上我需要这个: partialID = @"com.sortitapps.themes.pink."; 虽然这不是查找字符的通用解决方案,但在您的特定情况下,您可以通过执行以下

我有以下
NSString

productID = @"com.sortitapps.themes.pink.book";
最后,“书”可以是任何东西。。。。“音乐”、“电影”、“游戏”等

我需要找到单词pink之后的第三个句号,这样我就可以用其他单词替换最后一个“book”单词。如何使用NSRange执行此操作?基本上我需要这个:

partialID = @"com.sortitapps.themes.pink.";

虽然这不是查找字符的通用解决方案,但在您的特定情况下,您可以通过执行以下操作“作弊”并保存代码:

[productID stringByDeletingPathExtension];

本质上,我将名称视为一个文件名,并为此目的使用NSString方法删除最后一个(且仅最后一个)扩展名。

您可以使用
-[NSString ComponentsParatedBysString:@.”]
将其拆分为组件,使用所需的值创建一个新数组,然后使用
[NSArray componentsJoinedByString:@]
再次将修改后的数组加入字符串。

您可以尝试反向搜索点并使用结果获得所需的范围:

NSString *str = @"com.sortitapps.themes.pink.book";
NSUInteger dot = [str rangeOfString:@"." options:NSBackwardsSearch].location;

NSString *newStr =
   [str stringByReplacingCharactersInRange:NSMakeRange(dot+1, [str length]-dot-1)
                                withString:@"something_else"];

尽管NSRange是解决此问题的正确解决方案,但我最终还是使用了您的解决方案,因为它更易于理解和操作。之所以不应该使用这种方法,是因为Apple/iOS不能保证数组的顺序是正确的(尽管在实践中总是如此)。实际上,from:数组中的子字符串按照它们在接收器中的顺序出现。是的,我的答案是关于这个问题的:)