String length in Swift 1.2 and Swift 2.0

string, swift

Solution

You can use extension for it like:

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

and you can use it:

if mystr.length >= 3 {

}

Or you can directly count this way:

if count(mystr) >= 3{

}

And this is also working for me :

if count(mystr.utf16) >= 3 {

}

For Swift 2.0:

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

Another extension:

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

If you want direct use:

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

Problem

In the previous version of Swift, I had the following code. ``` func myfunc(mystr: String) { if mystr.utf16Count >= 3 { ``` With the latest release of Swift 1.2, I now get the following error. ``` 'utf16Count' is unavailable: Take the count of a UTF-16 view instead, i.e. count(str.utf16) ``` So I change my code as follows: ``` func myfunc(mystr: String) { if count(mystr.utf16) >= 3 { ``` But that doesn't work. I now get the following error message instead. ``` '(String.UTF16View) -> _' is not identical to 'Int16' ``` What is the correct way to get the length of a string with Swift 1.2?

Original source

Related problems