-1

我有 2 个字符串:

ahFkZXZ-cHV6emxlZmxvd2RldnIZCxILUHV6emxlSW1hZ2UYgICAgICAgIBcDA
ahFkZXZ-cHV6emxlZmxvd2RldnIZCxILUHV6emxlSW1hZ2UYgICAgICAgIBCDA

您会注意到这两个字符串几乎相同,除了倒数第三个字母“C”在一个中为大写,而在另一个中为小写。我根据这些名称将文件保存到磁盘 - 所以问题就变成了,因为 Mac OS X 是一个不区分大小写的文件系统,第二个具有此名称的文件将覆盖第一个。

我的直接想法是迭代字符串中的字母,并将大写字母“映射”为小写字母。例如,对于每个大写字母,将其替换为 2 个小写字母(“C”将变为“cc”)。

这个实现的唯一性有什么问题吗?在 Objective C 中实现这一目标的最简单方法是什么?对每个字母进行迭代很容易,但我很好奇是否有一些内置的辅助函数可以让这变得不那么痛苦。

此外,我不确定 Mac OSX/iOS 上的文件名长度限制。

*另请注意,这是针对 iOS 应用程序的,但我只想解决这个问题,因为它在模拟器中出错了。

4

2 回答 2

0

你这样做是不对的。

可能的解决方案:

  1. 将字符串转换为大写/小写
  2. 如果两个“密钥”都有效并且您需要两个不同的文件,请不要使用密钥作为文件名。分配一个唯一的(例如递增的)文件名,并有一个单独的文件将密钥映射到文件名。
于 2013-04-18T09:51:52.873 回答
0

为什么不尝试在字符串末尾添加字符串哈希?如果将此哈希添加到字符串中,则每种情况都会有一个唯一的字符串。

函数是:[str hash];

于 2013-04-18T09:56:54.453 回答