web-dev-qa-db-ja.com

文字列の最後の2文字を削除する(Swift 3.0)

Swift 3.0の文字列の最後の2文字を削除する簡単な方法はありますか? here と明記されているように、最後の文字を削除する簡単な方法があります。最後の2文字を削除する方法を知っていますか?ありがとう!

52
Ben
var name: String = "Dolphin"
let endIndex = name.index(name.endIndex, offsetBy: -2)
let truncated = name.substring(to: endIndex)
print(name)      // "Dolphin"
print(truncated) // "Dolph"
56

更新:Xcode 9•Swift 4以降

文字列はRangeReplaceableCollectionに準拠するようになったため、コレクションメソッドdropLastを文字列で直接使用できるため、拡張は不要になりました。唯一の違いは、サブストリングを返すことです。文字列が必要な場合は、そこから新しい文字列を初期化する必要があります。

let string = "0123456789"
let substring1 = string.dropLast(2)         // "01234567"
let substring2 = substring1.dropLast()      // "0123456"
let result = String(substring2.dropLast())  // "012345"

Swift 3.x

文字に対してメソッドdropLast(n :)を使用して、任意の数の文字を削除できます。

let str = "0123456789"
let result = String(str.characters.dropLast(2))   // "01234567"

拡張として:

extension String {
    func dropLast(_ n: Int = 1) -> String {
        return String(characters.dropLast(n))
    }
    var dropLast: String {
        return dropLast()
    }
}

let str = "0123456789"

let result = str.dropLast(2)     // "01234567"
let result2 = result.dropLast    // "0123456"
117
Leo Dabus

スウィフト4:

let str = "Hello, playground"
let newSTR1 = str.dropLast(3)
print(newSTR1) 

output: "Hello, playgro"

//---------------//

let str = "Hello, playground"
let newSTR2 = str.dropFirst(2)
print(newSTR2)

output: "llo, playground"
19
Deepak Tagadiya

removeSubrange(Range<String.Index>)を次のように使用します:

var str = "Hello, playground"
str.removeSubrange(Range(uncheckedBounds: (lower: str.index(str.endIndex, offsetBy: -2), upper: str.endIndex)))

文字列の長さが2文字未満の場合、これはクラッシュします。それはあなたの要件ですか?

1
Andy Obusek

removeLast() を使用する方が良い

var myString = "Hello world"
myString.removeLast(2)

output : "Hello wor"
0
Guillaume Ramey