【问题标题】:Uniquely mapping upper case to lower case唯一地将大写字母映射到小写字母
【发布时间】:2013-04-18 09:41:38
【问题描述】:

我有 2 个字符串:

ahFkZXZ-cHV6emxlZmxvd2RldnIZCxILUHV6emxlSW1hZ2UYgICAgICAgIBcDA
ahFkZXZ-cHV6emxlZmxvd2RldnIZCxILUHV6emxlSW1hZ2UYgICAgICAgIBCDA

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

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

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

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

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

【问题讨论】:

  • “映射”是指“转换为大写”吗?如果是这样,NSStringupperCaseString 方法应该会为您完成。
  • Mac OS X 不是文件系统 - OS X 是操作系统。您的意思是 HFS 是一个文件系统,实际上可能区分大小写或不区分大小写,具体取决于您如何配置机器。

标签: ios objective-c nsstring uppercase lowercase


【解决方案1】:

你做错了。

可能的解决方案:

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

【讨论】:

    【解决方案2】:

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

    函数为:[str hash];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-15
      • 2013-02-04
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      相关资源
      最近更新 更多