标签: swift-string

如何获得 Apple 表情符号名称而不是 Unicode 名称?

我看到字符查看器中显示的表情符号的 Unicode 名称与其 Apple 名称不同。如何使用 Swift 获取表情符号的 Apple 名称?

例子:

表情符号:

Unicode 名称(通过 获得.applyingTransform(.toUnicodeName, reverse: false)):

张开嘴和微笑的眼睛的笑脸

Apple 名称(来自 macOS Character Viewer):

眯着眼睛咧嘴笑的脸

emoji swift swift-string

4
推荐指数
1
解决办法
213
查看次数

为什么 unicode 作为编码包含在 Swift 的 String API 中?

我阅读了这个关于字符串编码的非常重要的博客

阅读后我意识到 unicode 是将字符映射到整数代码点的标准。这些整数如何存储在内存中是一个完全不同的概念。这就是.utf8,.utf16发挥作用的地方,定义了我们在内存中存储这些整数的方式。

在 Swift StringAPI 中有一种方法可以为我们提供用于表示String各种编码的数据字节:

func data(using encoding: String.Encoding, allowLossyConversion: Bool = false) -> Data?
Run Code Online (Sandbox Code Playgroud)

此方法的第一个参数是 Type String.Encoding。该结构Encoding的编码声明为:

static let unicode: String.Encoding
Run Code Online (Sandbox Code Playgroud)

现在突然该方法可以给我String使用编码的数据表示.unicode

现在这实际上与我在阅读上述博客后得出的结论相反。它给了我一个字符串的数据表示,甚至认为 unicode 没有提供我如何存储它的细节。

谁能告诉我我在这里错过了什么?我现在真的很困惑。

unicode character-encoding swift swift-string

2
推荐指数
1
解决办法
138
查看次数

为什么使用 isEmpty 比 Swift 与空字符串文字的比较更好?

Swift 的 String 类型有一个名为 name 的属性isEmpty,指示字符串是否没有字符。

\n\n

我想知道使用isEmpty空字符串文字和检查空字符串文字的相等性之间是否有任何区别。换句话说,myString.isEmpty还有比 更好吗myString == ""

\n\n

我做了一些研究并提出了以下建议:

\n\n
    \n
  1. Apple 开发人员文档(以及Swift 语言指南)中的字符串结构参考建议使用isEmpty而不是检查字符串的长度:
  2. \n
\n\n
\n

要检查字符串是否为空,请使用其isEmpty属性,而不是将其中一个视图的长度与 进行比较0。与 isEmpty 不同,计算 view\xe2\x80\x99s 计数属性需要迭代字符串的元素。

\n
\n\n
    \n
  1. Rob Napier 在 StackOverflow 上对 2015 年略有不同的问题的回答如下:

    \n\n
    \n

    空字符串是唯一的空字符串,因此不应该存在string.isEmpty()返回与 不同的值的情况string == ""。当然,他们可能会花费不同的时间和内存来完成此操作。它们是否使用不同的时间和内存量是一个未描述的实现细节,但这isEmpty是检查 Swift 的首选方法(如文档所述)。

    \n
  2. \n
  3. 一些博客文章还建议使用isEmptyspecial而不是检查字符串的长度是否为0。

  4. \n
\n\n

然而,这些来源都没有反对与空文字进行比较。

\n\n

myString.count == …

swift swift-string

1
推荐指数
1
解决办法
1567
查看次数

标签 统计

swift ×3

swift-string ×3

character-encoding ×1

emoji ×1

unicode ×1