Swift - 从字符串中删除"字符"

Cal*_*ams 65 string xcode ios swift

我有一个字符串,它是"Optional("5")".我需要删除围绕5的"".我通过执行以下操作删除了"可选":

text2 = text2.stringByReplacingOccurrencesOfString("Optional(", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
Run Code Online (Sandbox Code Playgroud)

我无法删除"字符,因为他们在代码中指定字符串的结尾.

das*_*ght 142

Swift使用反斜杠来转义双引号.以下是Swift中转义的特殊字符列表:

  • \0 (空字符)
  • \\ (反斜杠)
  • \t (水平标签)
  • \n (换行)
  • \r (回车)
  • \" (双引号)
  • \' (单引号)

这应该工作:

text2 = text2.replacingOccurrences(of: "\\", with: "", options: NSString.CompareOptions.literal, range: nil)
Run Code Online (Sandbox Code Playgroud)


Ale*_*ano 49

Swift 3和Swift 4:

text2 = text2.textureName.replacingOccurrences(of: "\"", with: "", options: NSString.CompareOptions.literal, range:nil)
Run Code Online (Sandbox Code Playgroud)

更新到Swift 3.0.1的最新文档有:

  • 空字符(\0)
  • 反斜杠(\\)
  • 水平标签(\t)
  • 换行(\n)
  • 回车(\r)
  • 双引号(\")
  • 单引号(\')
  • Unicode标量(\u{n}),其中n介于1到8个十六进制数字之间

如果您需要更多详细信息,可以在这里查看官方文档


Cha*_*lva 24

这是swift 3更新的答案

var editedText = myLabel.text?.replacingOccurrences(of: "\"", with: "")
Run Code Online (Sandbox Code Playgroud)
Null Character (\0)
Backslash (\\)
Horizontal Tab (\t)
Line Feed (\n)
Carriage Return (\r)
Double Quote (\")
Single Quote (\')
Unicode scalar (\u{n})
Run Code Online (Sandbox Code Playgroud)


Nor*_*lim 8

要删除可选项,您应该只执行此操作

println("\(text2!)")
Run Code Online (Sandbox Code Playgroud)

因为如果你不使用"!" 它采用text2的可选值

要从5中删除"",你必须将它转换为NSInteger或NSNumber容易peasy.它有""导致它的字符串.


Luc*_*ier 7

替换为删除不是很合乎逻辑。String.filter 允许逐个字符迭代字符串并只保留真正的断言。

斯威夫特 4 & 5

var aString = "Optional(\"5\")"

aString = aString.filter { $0 != "\"" }

> Optional(5)
Run Code Online (Sandbox Code Playgroud)

或者延长

var aString = "Optional(\"5\")"

let filteredChars = "\"\n\t"

aString = aString.filter { filteredChars.range(of: String($0)) == nil }

> Optional(5)
Run Code Online (Sandbox Code Playgroud)


小智 6

我最终让它在操场上工作,我正在尝试从字符串中删除多个字符:

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
Run Code Online (Sandbox Code Playgroud)


Grz*_*sza 5

If you want to remove more characters for example "a", "A", "b", "B", "c", "C" from string you can do it this way:

someString = someString.replacingOccurrences(of: "[abc]", with: "", options: [.regularExpression, .caseInsensitive])
Run Code Online (Sandbox Code Playgroud)