一尘不染

Swift 1.2和Swift 2.0中的字符串长度

swift

在以前的Swift版本中,我有以下代码。

func myfunc(mystr: String) {
    if mystr.utf16Count >= 3 {

在最新版本的Swift 1.2中,我现在收到以下错误。

'utf16Count' is unavailable: Take the count of a UTF-16 view instead, i.e. count(str.utf16)

所以我将代码更改如下:

func myfunc(mystr: String) {
    if count(mystr.utf16) >= 3 {

但这是行不通的。我现在收到以下错误消息。

'(String.UTF16View) -> _' is not identical to 'Int16'

使用Swift 1.2获取字符串长度的正确方法是什么?


阅读 255

收藏
2020-07-07

共1个答案

一尘不染

您可以使用扩展名,例如:

extension String {
     var length: Int { return count(self)         }  // Swift 1.2
}

您可以使用它:

if mystr.length >= 3 {

}

或者,您可以直接通过这种方式进行计数:

if count(mystr) >= 3{

}

这也为我工作:

if count(mystr.utf16) >= 3 {

}

对于 Swift 2.0:

extension String {
    var length: Int {
        return characters.count
    }
}
let str = "Hello, World"
str.length  //12

另一个扩展:

extension String {
    var length: Int {
        return (self as NSString).length
    }
}
let str = "Hello, World"
str.length //12

如果要直接使用:

let str: String = "Hello, World"
print(str.characters.count) // 12

let str1: String = "Hello, World"
print(str1.endIndex) // 12

let str2 = "Hello, World"
NSString(string: str2).length  //12
2020-07-07