[解決済み] Swift で文字列から最初の文字を削除する最も簡潔な方法は何ですか?
質問
文字列から1文字目を削除したい。今のところ、一番簡潔に思いつくのは
display.text = display.text!.substringFromIndex(advance(display.text!.startIndex, 1))
文字列をインデックス化するために
Int
で文字列をインデックスできないことは知っていますが、この解決法は非常に冗長なように思えます。私が見落としている別の方法があるのでしょうか?
どのように解決するのですか?
もし、あなたが Swift 3 を使用している場合、この回答の2番目のセクションは無視できます。良いニュースは、これが今、実際に再び簡潔であるということです! Stringの新しいremove(at:)メソッドを使用するだけです。
var myString = "Hello, World"
myString.remove(at: myString.startIndex)
myString // "ello, World"
私はグローバルな
dropFirst()
という関数があります。
let original = "Hello" // Hello
let sliced = dropFirst(original) // ello
短く、明確で、Sliceableプロトコルに準拠するものであれば、何でも使えます。
Swift 2を使用している場合
を使用している場合、この回答は変更されました。あなたはまだdropFirstを使うことができますが、文字列から最初の文字を削除することなく
characters
プロパティから最初の文字を削除し、その結果を文字列に変換することなく、dropFirst を使用できます。
let original = "Hello" // Hello
let sliced = String(original.characters.dropFirst()) // ello
もう一つの方法は、suffix関数を使って、文字列の
UTF16View
. もちろん、これも後でStringに変換する必要があります。
let original = "Hello" // Hello
let sliced = String(suffix(original.utf16, original.utf16.count - 1)) // ello
これらはすべて、私が最初に提供した解決策は、Swiftの新しいバージョンでこれを行うための最も簡潔な方法ではないことが判明したと言うことです。私は、@chrisの解決策に戻ることをお勧めします。
removeAtIndex()
を使用する @chris のソリューションに戻ることをお勧めします。
var original = "Hello" // Hello
let removedChar = original.removeAtIndex(original.startIndex)
original // ello
また、下のコメントで @vacawama が指摘しているように、元の String を変更しない別のオプションとして、substringFromIndex を使用することもできます。
let original = "Hello" // Hello
let substring = original.substringFromIndex(advance(original.startIndex, 1)) // ello
また、Stringの先頭と末尾の文字を削除したい場合は、substringWithRangeを使用することができます。ただ、次のような場合に備えて
startIndex + n > endIndex - m
.
let original = "Hello" // Hello
let newStartIndex = advance(original.startIndex, 1)
let newEndIndex = advance(original.endIndex, -1)
let substring = original.substringWithRange(newStartIndex..<newEndIndex) // ell
最後の行は添え字記法で書くこともできます。
let substring = original[newStartIndex..<newEndIndex]
関連
-
[解決済み] 文字列リテラルの前にある'b'文字は何を意味するのでしょうか?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] ファイルの内容からJavaの文字列を作成するにはどうすればよいですか?
-
[解決済み] Javascriptで文字列の1文字目を削除する
-
[解決済み] Goでint値をstringに変換する方法は?
-
[解決済み] 文字列から最後の文字を削除するには?
-
[解決済み] swiftにStringのtrimメソッドはありますか?
-
[解決済み】文字列中のある文字の出現回数をカウントする
-
[解決済み] 文字列を分割して変数に代入する方法
-
[解決済み] Swift で文字列から最初の文字を削除する最も簡潔な方法は何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] YAML の文字列を複数行に渡って分割するには?
-
[解決済み] Rust の `String` と `str` の違いは何ですか?
-
[解決済み] swiftにStringのtrimメソッドはありますか?
-
[解決済み] 文字列中の一部の文字を別の文字に置き換える
-
[解決済み] Goで文字列を整数型に変換する?
-
[解決済み】Swiftで文字列を連結する方法は?
-
[解決済み] 変数名が文字列で保存されている場合、変数値を取得する方法は?
-
[解決済み] Swift: 列挙型の値を文字列に変換しますか?
-
[解決済み] GroovyでStringが空白だけでなく非Nullかどうかを判断するには?
-
[解決済み] 文字列の0は何ですか?