独特地将大写字母映射到小写字母

时间:2013-04-18 09:41:39

标签: ios objective-c nsstring uppercase lowercase

我有2个字符串:

ahFkZXZ-cHV6emxlZmxvd2RldnIZCxILUHV6emxlSW1hZ2UYgICAgICAgIBcDA
ahFkZXZ-cHV6emxlZmxvd2RldnIZCxILUHV6emxlSW1hZ2UYgICAgICAgIBCDA

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

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

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

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

*另请注意,这适用于iOS应用,但我只想解决这个问题,因为它会在模拟器中出错。

2 个答案:

答案 0 :(得分:0)

你做错了。

可能的解决方案:

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

答案 1 :(得分:0)

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

该功能是:[str hash];