[解決済み] Swift 文字の先頭から最後のインデックスまでの部分文字列を取得する方法
質問
文字列を別の文字列に変換する最も良い/簡単な方法を知りたいのですが、サブセットのみで、最初から始まって文字の最後のインデックスに行くのです。
たとえば、"www.stackoverflow.com" を "www.stackoverflow" に変換します。 どのようなコード スニペットがそれを行うことができ、最も迅速であるのでしょうか。(私は、これが議論を引き起こさないことを望みますが、Swiftで部分文字列を処理する方法についての良いレッスンを見つけることができません。
どのように解決するのか?
逆アクセスするだけ
最良の方法は
substringToIndex
に組み合わせることです。
endIndex
プロパティと
advance
グローバル関数
var string1 = "www.stackoverflow.com"
var index1 = advance(string1.endIndex, -4)
var substring1 = string1.substringToIndex(index1)
背面から文字列を探す
使用方法
rangeOfString
と設定し
options
を
.BackwardsSearch
var string2 = "www.stackoverflow.com"
var index2 = string2.rangeOfString(".", options: .BackwardsSearch)?.startIndex
var substring2 = string2.substringToIndex(index2!)
拡張機能はなく、純粋に慣用的なSwift
Swift 2.0
advance
は、現在
Index
と呼ばれ
advancedBy
. みたいな感じでやるんですね。
var string1 = "www.stackoverflow.com"
var index1 = string1.endIndex.advancedBy(-4)
var substring1 = string1.substringToIndex(index1)
Swift 3.0
を呼び出すことはできません。
advancedBy
の上で
String
は可変サイズの要素を持つため を使う必要があります。
index(_, offsetBy:)
.
var string1 = "www.stackoverflow.com"
var index1 = string1.index(string1.endIndex, offsetBy: -4)
var substring1 = string1.substring(to: index1)
いろいろなものの名前が変わりました。ケースはcamelCaseで書かれています。
startIndex
となり
lowerBound
.
var string2 = "www.stackoverflow.com"
var index2 = string2.range(of: ".", options: .backwards)?.lowerBound
var substring2 = string2.substring(to: index2!)
また、強制的にアンラップすることはお勧めしません。
index2
. オプショナルバインディングを使うか
map
. 個人的には
map
:
var substring3 = index2.map(string2.substring(to:))
スウィフト4
Swift 3 のバージョンも有効ですが、インデックスの範囲を指定して添え字を使えるようになりました。
let string1 = "www.stackoverflow.com"
let index1 = string1.index(string1.endIndex, offsetBy: -4)
let substring1 = string1[..<index1]
2番目のアプローチは変更されません。
let string2 = "www.stackoverflow.com"
let index2 = string2.range(of: ".", options: .backwards)?.lowerBound
let substring3 = index2.map(string2.substring(to:))
関連
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Swiftでindexとelementでループを反復させる方法
-
[解決済み] IBOutletsはARCのもとで強くなるべきか、弱くなるべきか?
-
[解決済み] Swiftでリストアイテムのインデックスを見つける方法は?
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] SwiftでURLから画像を読み込む/ダウンロードする
-
[解決済み] プログラミング言語Swiftで文字列のn文字目を取得する
-
[解決済み] SwiftでStringのサブストリングはどのように動作するか
-
[解決済み] Swiftで配列に要素を追加する
-
[解決済み】文字列から最後の文字を削除する。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 実装 サイバーパンク風ボタン
おすすめ
-
iOS classic error Undefined symbols for architecture XXX:
-
[解決済み] App Storeのアプリと連動させる方法
-
[解決済み] Xcode 12、iOS Simulator用にビルドしても、iOS用にビルドされたオブジェクトファイルでは、アーキテクチャ「arm64」用にリンクされます。
-
[解決済み] UITextFieldのテキスト変更イベント
-
[解決済み] NSOperationとGrand Central Dispatchの比較
-
[解決済み] iOSとWatchKitで画像のtintColorを変更する方法
-
[解決済み] iPhoneでナビゲーションバーを1ページ目だけ非表示にする
-
[解決済み] ぼかしの入ったオーバーレイビューの作成
-
[解決済み】String.substringWithRangeはどのように使うのですか?(または、SwiftでRangeはどのように動作しますか?)
-
[解決済み] Swiftで "Index "を "Int "型に変換するには?