2017-10-28 4 views
-1

Ich bin in Swift4 codieren. Gibt es eine Möglichkeit, die formatierte Zahl in ein Int zu konvertieren? Wie bekomme ich den Wert einer formatierten Zahl, um Berechnungen durchzuführen?Wie bekomme ich den Wert einer formatierten Zahl

let formattedNumber = "12,345,678,910" let newNumber = Int(formattedNumber)*2

+0

Es hängt vielleicht davon ab, wie * 'formatierteNummer' aufgefüllt wird. Möchten Sie uns diesen Code geben? – dfd

+0

@dfd Nein, ich wollte nur meine Frage klarer stellen. Mein Code hat so viel Müll dazwischen, ich dachte, diese Informationen wären klar genug –

+3

Die richtige Lösung ist es, 'NumberFormatter' zu verwenden, um die Zeichenfolge in eine Zahl zu konvertieren. – rmaddy

Antwort

1

nicht perfekt.

extension String { 

    var intValue: Int { 

    let removedCharacter = self.characters.map{String($0)}.filter{Int($0) != nil}.joined() 
    print(removedCharacter) 
    if !(removedCharacter.isEmpty) { 
     return Int(removedCharacter)! 
    } 
    return 0 
    } 

    func toInt(multiplyBy : Int) -> String { 

    let formatter = NumberFormatter() 
    formatter.numberStyle = .decimal 
    formatter.groupingSeparator = "," 
    let formattedString = formatter.string(for: intValue * multiplyBy) 
    return formattedString! 

    } 
} 

print("12,345,678,910".toInt(multiplyBy: 2)) 
>> 24,691,357,820 
+0

Sie sollten das Gruppierungstrennzeichen wahrscheinlich nicht auf '' 'fest codieren, es sei denn, es ist bekannt, dass alle zu analysierenden Strings immer Kommas haben. Alles hängt davon ab, wie die ursprüngliche formatierte Zeichenfolge generiert wird. – rmaddy

1

Sie müssen die Kommas entfernen zuerst:

let number = formattedNumber.replacingOccurrences(of: ",", with: "") 
let newNumber = Int(number)! * 2 
+0

Versuchen Sie, nach 'Int (number)' zu suchen. –

Verwandte Themen