Poseemos la mejor solución que hallamos on line. Queremos que te resulte de ayuda y si deseas comentarnos algo que nos pueda ayudar a crecer hazlo con libertad.
Solución:
Rápido 3/4
let string = "0kaksd020dk2kfj2123"
if let number = Int(string.components(separatedBy: CharacterSet.decimalDigits.inverted).joined())
// Do something with this number
También puedes hacer una extensión como:
extension Int
static func parse(from string: String) -> Int?
return Int(string.components(separatedBy: CharacterSet.decimalDigits.inverted).joined())
Y luego usarlo como:
if let number = Int.parse(from: "0kaksd020dk2kfj2123")
// Do something with this number
Primero, dividimos el string para que podamos procesar los artículos individuales. Entonces usamos NSCharacterSet
para seleccionar los números solamente.
import Foundation
let str = "I have to buy 3 apples, 7 bananas, 10eggs"
let strArr = str.split(separator: " ")
for item in strArr
let part = item.components(separatedBy: CharacterSet.decimalDigits.inverted).joined()
if let intVal = Int(part)
print("this is a number -> (intVal)")
rápido 4:
let string = "I have to buy 3 apples, 7 bananas, 10eggs"
let stringArray = string.components(separatedBy: CharacterSet.decimalDigits.inverted)
for item in stringArray
if let number = Int(item)
print("number: (number)")
Usando la “función de ayuda de expresiones regulares” de las coincidencias de expresiones regulares de extracción de Swift:
func matchesForRegexInText(regex: String!, text: String!) -> [String]
let regex = NSRegularExpression(pattern: regex,
options: nil, error: nil)!
let nsString = text as NSString
let results = regex.matchesInString(text,
options: nil, range: NSMakeRange(0, nsString.length))
as! [NSTextCheckingResult]
return map(results) nsString.substringWithRange($0.range)
puedes lograr eso fácilmente con
let str = "I have to buy 3 apples, 7 bananas, 10eggs"
let numbersAsStrings = matchesForRegexInText("\d+", str) // [String]
let numbersAsInts = numbersAsStrings.map $0.toInt()! // [Int]
println(numbersAsInts) // [3, 7, 10]
El patrón "d+"
coincide con uno o más dígitos decimales.
Por supuesto, lo mismo se puede hacer sin el uso de una función de ayuda si lo prefiere por cualquier motivo:
let str = "I have to buy 3 apples, 7 bananas, 10eggs"
let regex = NSRegularExpression(pattern: "\d+", options: nil, error: nil)!
let nsString = str as NSString
let results = regex.matchesInString(str, options: nil, range: NSMakeRange(0, nsString.length))
as! [NSTextCheckingResult]
let numbers = map(results) nsString.substringWithRange($0.range).toInt()!
println(numbers) // [3, 7, 10]
Solución alternativa sin expresiones regulares:
let str = "I have to buy 3 apples, 7 bananas, 10eggs"
let digits = "0123456789"
let numbers = split(str, allowEmptySlices: false) !contains(digits, $0)
.map $0.toInt()!
println(numbers) // [3, 7, 10]
Reseñas y calificaciones
Si para ti ha resultado de provecho este artículo, sería de mucha ayuda si lo compartes con más juniors de este modo contrubuyes a dar difusión a nuestro contenido.