长 NSString 到唯一的较短字符串

Posted

技术标签:

【中文标题】长 NSString 到唯一的较短字符串【英文标题】:long NSString to unique shorter string 【发布时间】:2012-08-06 10:03:41 【问题描述】:

我有一个长这样的 NSString;

[NSString stringWithFormat:@"st=WVhCd1ZYSnNQV2gwZEhBbE0wRWxNa1lsTWtZMU5UWTBOVGcxTlM1dVpYUnRaWEpoTG1OdmJTVXpRVGd3SlRKR2JXOWlhVzFsY21FbE1rWm5ZV1JuWlhRbE1rWm9iMjFsTG5odGJDWnViVk5wZEdWVmNtdzlhSFIwY0NVelFTVXlSaVV5UmpVMU5qUTFPRFUxTG01bGRHMWxjbUV1WTI5dEpUTkJPREFtYlc5a2RXeGxTV1E5TXpnNU1TWmhjSEJKWkQwMU5UWTBOVGcxTlNadWJWUmxiWEJzWVhSbFBXMXZZbWwwWlcxd2JHRjBaU1p2ZDI1bGNrbGtQWE5sY21oaGRDMXpZWEpwSm1SdmJXRnBiajF1WlhSdFpYSmhMbU52YlNadWJWTnBkR1U5TlRVMk5EVTROVFVtYjNkdVpYSlNiMnhsVkhsd1pUMHhKblpwWlhkbGNsSnZiR1ZVZVhCbFBURW1kbWxsZDJWeVNXUTljMlZ5YUdGMExYTmhjbWtt&max=10"];

它太长了,我应该缩短它。它的原始字符串必须是独一无二的。 有什么想法吗?

谢谢;

【问题讨论】:

你的字符串是干什么用的? 你如何生成那个字符串或者它是固定的? 这是一个获取一些数据的url。我将使用这个参数字符串来生成缓存文件。因为太长了,ios不让我用它作为文件名。 【参考方案1】:

这个博客很好地解决了我的问题。

http://mobiledevelopertips.com/core-services/create-md5-hash-from-nsstring-nsdata-or-file.html

【讨论】:

从字符串创建的 MD5 哈希不保证是唯一的。【参考方案2】:

如果您不想稍后检索该字符串,可以使用例如 SHA1 对其进行哈希处理(查看 Apple 的 CommonCrypto 库)。

【讨论】:

【参考方案3】:

我不使用 iphone 或 Objective c,但这似乎你可以使用 hashmap 或字典之类的东西 - value 是缩短的字符串(缓存文件名),或者其他, key 是您的长网址。我想目标 c/iOS 中有一些可用的数据结构用于此目的... 另外,看看这个question。 对字典键使用非常长的字符串可能不是一个好主意,通常情况相反:键很短,值包含任意数据。

【讨论】:

【参考方案4】:

有一些用于缩短 URL 的包装类,例如 MKBitlyHelper。使用这个类你可以缩短你的 url,然后进一步使用它。你可以从这里得到它http://blog.mugunthkumar.com/coding/bit-ly-wrapper-objective-c-iphone/

【讨论】:

以上是关于长 NSString 到唯一的较短字符串的主要内容,如果未能解决你的问题,请参考以下文章

Access 报告文本框仅显示 255 个字符的较长查询结果

sql 别名允许您通过用较短的名称(通常是单个字符)替换表的长名称来键入较少的字符。第8行显示

NSString 本地化比较:给定较长字符串的不一致结果

Dir[File.join(File.dirname(__FILE__), "subdirectory/**/*.rb")] 的较短版本?

生成唯一的随机字符串

在Delphi中获得唯一32位长字符串