Ich habe den folgenden Code verwendet, um Zahlen aus inputString
mit NSScanner
Meine erwartete Ausgabe ist 7 183 145 15 10 100
aber die Ausgabe, die ich bekomme, ist 7 183 145 10
Es extrahiert nur das erste Vorkommen einer Zahl aus jedem Wort. ZB: wenn sein Dho7ni89 es nur die 7 erkennt und 89 nicht entdeckt. Ich würde wirklich glücklich sein, wenn jemand mir hilft, einen Weg zu finden, das zu beheben.
Ihr Fehler ist einfach: Sie haben mit einer falschen Annahme begonnen. Sie trennen die Zeichenfolge künstlich in Wörter:
%Vor%Also genau das passiert. Jedes Wort wird nach einer Nummer, einmal durchsucht. Wenn ein Wort zwei Zahlen enthält, wird die zweite Zahl nie gescannt - weil Sie das nicht gesagt haben.
Die Lösung besteht darin, diese falsche Annahme zu unterlassen. Trennen Sie die Zeichenfolge nicht in Wörter! Wiederholen Sie einfach den Vorgang:
%Vor% ... bis Sie das Ende der Zeichenfolge des Scanners erreichen ( isAtEnd
).
Matt war ein bisschen schneller.
Warum teilst du deine Saite am Anfang?
Eine kleine Code-Umordnung ergibt das gewünschte Ergebnis:
Ausgabe
7 183 145 15 10 100
HINWEIS
Sie könnten auch
um die Zahlen herauszufiltern. Ich finde das ein bisschen ordentlicher als die Chars aufzulisten. Es werden jedoch zum Beispiel die Dezimalziffern der Indischen Schriften und auch Arabisch enthalten.
Tags und Links string objective-c nsnumber number-formatting nsscanner