[解決済み] swift で文字列から数字以外の文字を削除する
質問
数値だけであるはずの未知のデータを解析する必要があります。
Swiftでこれを行うための新しい方法はありますか?私がオンラインで見つけることができるすべては、物事を行う古いCの方法であるように思えます。
私は見ています
stringByTrimmingCharactersInSet
- を見ています。私の入力は、文字列の最初か最後に空白または特殊文字があるだけだと思うからです。このような場合に使用できる組み込みの文字セットはありますか?それとも、自分で作成する必要がありますか?
私は、次のようなものがあることを期待していました。
stringFromCharactersInSet()
のように、有効な文字だけを指定して保存できるようなものがあればいいなと思いました。
どのように解決するのですか?
stringFromCharactersInSet()のように、有効な文字だけを指定して保持できるものがあればいいなと思ったのですが、どうでしょうか?
あなたは
trimmingCharacters
と
inverted
という文字セットを使って、文字列の先頭または末尾から文字を削除します。Swift 3以降では
let result = string.trimmingCharacters(in: CharacterSet(charactersIn: "0123456789.").inverted)
また、文字列の任意の場所(先頭や末尾だけでなく)で数字以外の文字を削除したい場合は、次のようにします。
filter
は
characters
のように、例えばSwift 4.2.1では
let result = string.filter("0123456789.".contains)
また、文字列のどこからでもCharacterSetから文字を削除したい場合は、使用します。
let result = String(string.unicodeScalars.filter(CharacterSet.whitespaces.inverted.contains))
また、特定の形式の有効な文字列のみにマッチさせたい場合(例えば
####.##
のように)、正規表現を使うことができます。例えば
if let range = string.range(of: #"\d+(\.\d*)?"#, options: .regularExpression) {
let result = string[range] // or `String(string[range])` if you need `String`
}
これらの異なるアプローチの動作はわずかに異なるので、あなたが何をしようとしているのかによります。小数点を含むか含まないかは、小数点以下の数値が必要な場合、あるいは単なる整数が必要な場合です。これを実現する方法はたくさんあります。
古い、Swift 2 の構文については この回答の前のリビジョン .
関連
-
[解決済み] Swiftで文字列が別の文字列を含んでいるかどうかを確認するには?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] SwiftでStringを配列に分割する?
-
[解決済み] SwiftでIntをStringに変換する
-
[解決済み] Swiftの精密文字列フォーマット指定子
-
[解決済み】文字列から最後の文字を削除する。Swift言語
-
[解決済み】なぜ、Swiftの文字列では、?のような絵文字が奇妙に扱われるのですか?
-
[解決済み】Swift Stringの文字を置換する方法はありますか?
-
[解決済み] Swiftで1つのビューコントローラの向きを縦向きのみに固定する方法
-
[解決済み] ビルド入力ファイルが見つかりません」Swift 4.2、Xcode 10.0
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Swiftがエラーを報告。アボートトラップ:6
-
[解決済み] Swiftダブルからストリング
-
[解決済み] swiftで改行なしの印刷をする
-
[解決済み] SwiftUI。TextFieldをファーストレスポンダーにするには?
-
[解決済み] タスクが終了するまで待機する
-
[解決済み] ""内の二重引用符を印刷するには?
-
[解決済み] Swift: PREPROCESSORフラグ(`#if DEBUG`など)を使ってAPIキーを実装する方法とは?
-
[解決済み] アニメーションによる円の描画
-
[解決済み] Swift: switch ケースでオプションの値に対するテストを行う
-
[解決済み] Swiftでクラスメソッド/プロパティを作成するには?