在Swift中,我如何计算UITextField中的字符数量?

13 浏览
0 Comments

在Swift中,我如何计算UITextField中的字符数量?

如何获取 String 的长度?例如,我定义了一个变量:

var test1: String = "Scott"

然而,我似乎找不到字符串的长度方法。

admin 更改状态以发布 2023年5月21日
0
0 Comments

简述:

对于Swift 2.0和3.0,使用test1.characters.count。但是,你需要了解一些事情,所以请继续阅读。

计算Swift中的字符数

在Swift 2.0之前,count是一个全局函数,但在Swift 2.0之后,它可以作为成员函数调用。

test1.characters.count

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

然而,由于在Swift中实现Strings的方式,字符并不总是占用相同数量的内存,所以要注意此方法与其他语言中通常的字符计数方法相当不同。

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

但是,如下所述,返回的值不能保证与在characters上调用count得到的值相同。

来自语言参考:

扩展字形集可以由一个或多个Unicode标量组成。这意味着不同的字符 - 以及相同字符的不同表示方式 - 可能需要不同数量的内存来存储。因此,在Swift中,字符串的字符并不都占用同样数量的空间。结果,不能通过简单遍历字符串来计算字符串的字符数。如果你在处理特别长的字符串值,请注意,characters属性必须遍历整个字符串中的Unicode标量,以确定该字符串的字符。

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

正如n00neimp0rtant在评论中指出的,一个完美地诠释了上述情况的例子是检查包含单个emoji字符的字符串的长度。

var emoji = ""
emoji.characters.count             //returns 1
emoji.utf16.count                  //returns 2

0
0 Comments

自Swift 4+起

就是:

test1.count

由于某些原因。

(感谢Martin R)

自Swift 2起:

Swift 2中,Apple将全局函数更改为协议扩展,这些扩展与符合协议的任何类型匹配。因此,新语法为:

test1.characters.count

(感谢JohnDifool的提醒)

自Swift 1起

使用count characters方法:

let unusualMenagerie = "Koala 🐨, Snail 🐌, Penguin 🐧, Dromedary 🐪"
println("unusualMenagerie has \(count(unusualMenagerie)) characters")
// prints "unusualMenagerie has 40 characters"

来自苹果Swift指南

(请注意,对于早于1.2版本的Swift,这将替换为countElements(unusualMenagerie)

相应变量,这将为

length = count(test1) // was countElements in earlier versions of Swift

或者您可以使用test1.utf16count

0