为了账号安全,请及时绑定邮箱和手机立即绑定

获取String的长度

获取String的长度

获取String的长度你怎么得到一个长度String?例如,我有一个变量定义如下:var test1: String = "Scott"但是,我似乎无法在字符串上找到长度方法。
查看完整描述

3 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

对于Swift 2.0和3.0,请使用test1.characters.count。但是,你应该知道一些事情。所以,请继续阅读。

在Swift中计算字符数

在Swift 2.0之前,它count是一个全局函数。从Swift 2.0开始,它可以被称为成员函数。

test1.characters.count

它将返回a中的实际Unicode字符数String,因此它是最正确的替代方法,如果您打印字符串并手动计算字符,您将得到相同的结果。

但是,由于Strings在Swift中实现了这种方式,因此字符并不总是占用相同数量的内存,因此请注意,这与其他语言中的常用字符数方法完全不同。

例如,您也可以使用 test1.utf16.count

但是,如下文所述,返回值不保证是相同的调用countcharacters

从语言参考:

扩展的字形集群可以由一个或多个Unicode标量组成。这意味着不同的字符和相同字符的不同表示可能需要不同的内存量来存储。因此,Swift中的字符不会在字符串表示中占用相同数量的内存。因此,如果不迭代字符串以确定其扩展的字形集群边界,则无法计算字符串中的字符数。如果使用特别长的字符串值,请注意characters属性必须遍历整个字符串中的Unicode标量,以确定该字符串的字符。

characters属性返回的字符数不总是与包含相同字符的NSString的length属性相同。NSString的长度基于字符串的UTF-16表示中的16位代码单元的数量,而不是字符串中Unicode扩展的字形集群的数量。

完美地说明上述情况的一个例子是检查包含单个表情符号字符的字符串的长度,如注释中的n00neimp0rtant所指出的。

var emoji = "?"

emoji.characters.count             //returns 1

emoji.utf16.count                  //returns 2


查看完整回答
反对 回复 2019-08-09
  • 3 回答
  • 0 关注
  • 1064 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信