「Optional( "5")」の文字列があります。5を囲む「」を削除する必要があります。次のようにして「オプション」を削除しました。
text2 = text2.stringByReplacingOccurrencesOfString("Optional(", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
コード内の文字列の終わりを示す「」文字を削除するのに問題があります。
回答:
Swiftは、バックスラッシュを使用して二重引用符をエスケープします。Swiftでエスケープされた特殊文字のリストは次のとおりです。
\0
(ヌル文字)\\
(バックスラッシュ)\t
(水平タブ)\n
(改行)\r
(キャリッジリターン)\"
(二重引用符)\'
(一重引用符)
これは機能するはずです:
text2 = text2.replacingOccurrences(of: "\\", with: "", options: NSString.CompareOptions.literal, range: nil)
text2 = text2.textureName.replacingOccurrences(of: "\"", with: "", options: NSString.CompareOptions.literal, range:nil)
Swift3.0.1に更新された最新のドキュメントには次のものがあります。
- ヌル文字(
\0
)- バックスラッシュ(
\\
)- 水平タブ(
\t
)- 改行(
\n
)- キャリッジリターン(
\r
)- 二重引用符(
\"
)- 一重引用符(
\'
)- Unicodeスカラー(
\u{n}
)、ここでnは1から8桁の16進数です
これが迅速な3つの更新された答えです
var editedText = myLabel.text?.replacingOccurrences(of: "\"", with: "")
Null Character (\0)
Backslash (\\)
Horizontal Tab (\t)
Line Feed (\n)
Carriage Return (\r)
Double Quote (\")
Single Quote (\')
Unicode scalar (\u{n})
オプションを削除するには、これを行う必要があります
println("\(text2!)")
「!」を使用しない場合の原因 text2のオプション値を取ります
また、5から「」を削除するには、NSIntegerまたはNSNumberに変換する必要があります。文字列の原因は「」です。
私は最終的にこれを遊び場で機能させ、文字列から削除しようとしている複数の文字を持っています:
var otherstring = "lat\" : 40.7127837,\n"
var new = otherstring.stringByTrimmingCharactersInSet(NSCharacterSet.init(charactersInString: "la t, \n \" ':"))
count(new) //result = 10
println(new)
//yielding what I'm after just the numeric portion 40.7127837
文字列から「a」、「A」、「b」、「B」、「c」、「C」などの文字をさらに削除する場合は、次の方法で行うことができます。
someString = someString.replacingOccurrences(of: "[abc]", with: "", options: [.regularExpression, .caseInsensitive])
Martin Rが言うように、文字列 "Optional(" 5 ")"は何か間違ったことをしたように見えます。
dasblinkenlightが答えてくれるので問題ありませんが、将来の読者のために、次のように代替コードを追加しようと思います。
if let realString = yourOriginalString {
text2 = realString
} else {
text2 = ""
}
あなたの例のtext2はStringのように見え、すでに ""に設定されている可能性がありますが、キャストまたは正しく使用されていない場所にOptional(String)型のyourOriginalStringがあるようです。
これが読者の助けになることを願っています。
let resultingString = optionalString ?? ""
。
削除のための交換は、まったく論理的ではありません。String.filterを使用すると、文字列をcharごとに繰り返し、真のアサーションのみを保持できます。
Swift 4&5
var aString = "Optional(\"5\")"
aString = aString.filter { $0 != "\"" }
> Optional(5)
または拡張する
var aString = "Optional(\"5\")"
let filteredChars = "\"\n\t"
aString = aString.filter { filteredChars.range(of: String($0)) == nil }
> Optional(5)
文字列があるとしましょう:
var string = "potatoes + carrots"
そして、その文字列の「ジャガイモ」という単語を「トマト」に置き換えたいと考えています。
string = string.replacingOccurrences(of: "potatoes", with: "tomatoes", options: NSString.CompareOptions.literal, range: nil)
文字列を印刷すると、次のようになります。 "tomatoes + carrots"
ジャガイモという単語を刺し傷から完全に削除したい場合は、次を使用できます。
string = string.replacingOccurrences(of: "potatoes", with: "", options: NSString.CompareOptions.literal, range: nil)
刺し傷に他のキャラクターを使用したい場合は、以下を使用してください。
- ヌル文字(\ 0)
- バックスラッシュ(\)
- 水平タブ(\ t)
- 改行(\ n)
- キャリッジリターン(\ r)
- 二重引用符(\ ")
- 一重引用符(\ ')
例:
string = string.replacingOccurrences(of: "potatoes", with: "dog\'s toys", options: NSString.CompareOptions.literal, range: nil)
出力: "dog's toys + carrots"
text2をオプションとしてインスタンス化しました(例:var text2:String?)。これが、文字列でOptional( "5")を受け取る理由です。奪う?と置き換えます:
var text2: String = ""
Optional("5")
ため、おそらく以前に問題が発生しました。「Optional(..)」をテキストで削除するのではなく、に割り当てる前にオプションのラップを解除する方が理にかなっています。text2