Tengo una cadena que es "Opcional (" 5 ")". Necesito eliminar el "" que rodea al 5. He eliminado el 'Opcional' haciendo:
text2 = text2.stringByReplacingOccurrencesOfString("Optional(", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
Tengo dificultades para eliminar los caracteres ", ya que designan el final de una cadena en el código.
Optional("5")
entonces probablemente algo salió mal antes, porque esa es la descripción de una cadena opcional. Tendría más sentido desenvolver el opcional antes de asignartext2
, en lugar de eliminar el "Opcional (..)" textualmente.Respuestas:
Swift usa barra invertida para escapar de las comillas dobles. Aquí está la lista de caracteres especiales escapados en Swift:
Esto debería funcionar:
text2 = text2.replacingOccurrences(of: "\\", with: "", options: NSString.CompareOptions.literal, range: nil)
fuente
Swift 3 y Swift 4:
text2 = text2.textureName.replacingOccurrences(of: "\"", with: "", options: NSString.CompareOptions.literal, range:nil)
Los documentos más recientes actualizados a Swift 3.0.1 tienen:
Si necesita más detalles, puede consultar los documentos oficiales aquí.
fuente
Aquí está la respuesta actualizada de Swift 3
var editedText = myLabel.text?.replacingOccurrences(of: "\"", with: "")
fuente
Para eliminar el opcional solo debes hacer esto
println("\(text2!)")
porque si no usa "!" toma el valor opcional de text2
Y para eliminar "" de 5 tienes que convertirlo a NSInteger o NSNumber fácilmente. Tiene "" porque es una cadena.
fuente
Finalmente logré que esto funcione en el patio de recreo, teniendo varios personajes que estoy tratando de eliminar de una cadena:
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
fuente
Si desea eliminar más caracteres, por ejemplo, "a", "A", "b", "B", "c", "C" de la cadena, puede hacerlo de esta manera:
someString = someString.replacingOccurrences(of: "[abc]", with: "", options: [.regularExpression, .caseInsensitive])
fuente
Como dice Martin R, su cadena "Opcional (" 5 ")" parece que hizo algo mal.
dasblinkenlight te responde, así que está bien, pero para futuros lectores, intentaré agregar un código alternativo como:
if let realString = yourOriginalString { text2 = realString } else { text2 = "" }
text2 en su ejemplo se ve como String y tal vez ya esté configurado en "" pero parece que tiene un yourOriginalString de tipo Optional (String) en algún lugar que no fue lanzado o usado correctamente.
Espero que esto pueda ayudar a algún lector.
fuente
let resultingString = optionalString ?? ""
.Reemplazar para eliminar no es del todo lógico. String.filter permite iterar una cadena char por char y mantener solo una afirmación verdadera.
Swift 4 y 5
var aString = "Optional(\"5\")" aString = aString.filter { $0 != "\"" } > Optional(5)
O extender
var aString = "Optional(\"5\")" let filteredChars = "\"\n\t" aString = aString.filter { filteredChars.range(of: String($0)) == nil } > Optional(5)
fuente
Digamos que tienes una cadena:
var string = "potatoes + carrots"
Y desea reemplazar la palabra "patatas" en esa cadena por "tomates"
string = string.replacingOccurrences(of: "potatoes", with: "tomatoes", options: NSString.CompareOptions.literal, range: nil)
Si imprime su cadena, ahora será:
"tomatoes + carrots"
Si desea eliminar la palabra papas de la picadura por completo, puede usar:
string = string.replacingOccurrences(of: "potatoes", with: "", options: NSString.CompareOptions.literal, range: nil)
Si quieres usar otros personajes en tu picadura, usa:
Ejemplo:
string = string.replacingOccurrences(of: "potatoes", with: "dog\'s toys", options: NSString.CompareOptions.literal, range: nil)
Salida:
"dog's toys + carrots"
fuente
Ha creado una instancia de text2 como opcional (por ejemplo, var text2: String?). Es por eso que recibe Opcional ("5") en su cadena. quitar el? y reemplazar con:
var text2: String = ""
fuente
Si obtiene la salida
Optional(5)
cuando intenta imprimir el valor de5
en un Int o String opcional , primero debe desenvolver el valor:if let value = text { print(value) }
Ahora tienes el valor sin la cadena "Opcional" que Swift agrega cuando el valor no se desenvuelve antes.
fuente