finde alle Zahlen in einem String mit einem NSScanner

7

Ich habe den folgenden Code verwendet, um Zahlen aus inputString mit NSScanner

zu extrahieren %Vor%

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.

    
Manju Basha 24.05.2015, 15:03
quelle

2 Antworten

8

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 24.05.2015, 15:13
quelle
10

Matt war ein bisschen schneller. Warum teilst du deine Saite am Anfang?
Eine kleine Code-Umordnung ergibt das gewünschte Ergebnis:

%Vor%

Ausgabe

  

7   183   145   15   10   100

HINWEIS
Sie könnten auch

verwenden %Vor%

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.

    
luk2302 24.05.2015 15:15
quelle