【问题标题】:Create (sane/safe) app bundle identifier from any (unsafe) string从任何(不安全)字符串创建(健全/安全)应用程序包标识符
【发布时间】:2011-11-16 09:41:47
【问题描述】:

我想从一些随机的 Unicode 字符串(可能只包含任何内容)创建一个健全/安全的应用程序包名称(即有点可读,没有“奇怪”字符等)。

(函数是 Cocoa、ObjC、Python 等对我来说并不重要)

(这与filename questionbundle name question 有关,但捆绑标识符的限制要大得多。我认为它甚至不能包含空格,我也想去掉点并加上我自己的前缀。)

我认为 Xcode 也有一些功能可以从应用程序名称自动执行此操作。也许 Cocoa 中有一些标准函数可以做到这一点。

【问题讨论】:

标签: python macos cocoa app-bundle


【解决方案1】:

捆绑标识符应采用反向 URL 形式(保证全局唯一性):

com.apple.xcode,例如

所以你真的需要一个域名,然后你可以在下面发明任何你喜欢的方案。

考虑到这一点,以及对输入中字符的一些了解,您可以扫描您的输入以仅包含您想要的位组成一个新字符串,或者使用stringByReplacingOccurrencesOfString: withString: 之类的方法,如果您愿意,还可以使用lowercaseString .

包标识符中允许的字符在Property List Documentation 中命名为:

捆绑 ID 字符串必须是统一类型标识符 (UTI),仅包含字母数字(A-Z、a-z、0-9)、连字符 (-) 和句点 (.) 字符。字符串也应该是反向 DNS 格式。

【讨论】:

  • 我不能使用字符串替换方法。根本不可能检查那里的所有无效字符,因为它们太多了(Unicode 有很多字符......)。
  • 另外,“扫描您的输入,仅包含您想要的位组成一个新字符串”部分是我的主要问题,您并没有真正回答(即如何做到这一点;尤其是如何知道哪些位是有效的)。
  • (考虑到您输入的字符的一些知识)
猜你喜欢
  • 2011-11-16
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-17
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多