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で文字列の長さを取得する正しい方法は何ですか?
次のように拡張機能を使用できます。
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
プロパティカウントを含むcharactersプロパティを使用する必要があります。
yourString.characters.count
Swift 2.0 UPDATE
extension String {
var count: Int { return self.characters.count }
}
つかいます:
var str = "I love Swift 2.0!"
var n = str.count
ここにすべてがあります- here からコピー
let str = "Hello"
let count = str.length // returns 5 (Int)
extension String {
var length: Int { return countElements(self) } // Swift 1.1
}
extension String {
var length: Int { return count(self) } // Swift 1.2
}
extension String {
var length: Int { return characters.count } // Swift 2.0
}
count(mystr)
は正しい方法です。エンコードを変換する必要はありません。
これ:if count(mystr.utf16) >= 3
は、Int16(3)
を実行する限り問題ありません。
編集:これは古い答えです。 OPは、Swift 2を反映するように質問を更新し、上記の答えは正しいです。