3 Stimmen

Wie extrahiert man einen numerischen Wert aus einer Zeichenkette?

Ist es möglich, eine Zahl aus einer Zeichenkette zu extrahieren. Ich habe zum Beispiel eine Zeichenkette:

my name is shishir and my number is 98890876478

Kann ich am 98890876478 aus der obigen Zeichenfolge?

Oder wenn mein String ist:

my name is shishir and my number is XXX98890876478XXX

Unter dieser Bedingung kann ich "98890876478" extrahieren, das zwischen XXX liegt.

Ist es möglich, dies zu tun?

Ich erhalte eine Nachricht von einem Server, die das obige Format haben sollte, und ich brauche den numerischen Wert für weitere Operationen

Bearbeiten:

Hier ist der Code, den ich zu verwenden versuche:

NSString *logString = [NSString stringWithFormat:@"%@",theXML]; 
NSString *digits = [logString stringByTrimmingCharactersInSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]; 
NSLog(@"Message id: %i", [digits intValue]);

die ausgibt:

2010-05-21 16:37:07.092 sms[5311:207] OK: message-ID XXX110103468XXX
2010-05-21 16:37:07.851 sms[5311:207] Message id: 2

Ich denke, es gibt zwei zurück, weil Größe==2. Ich muss den Wert zwischen den "XXX" abrufen.

6voto

AndersK Punkte 34870

Ich denke, was Sie brauchen, ist NSScanner, damit können Sie Teile der Zeichenkette herausnehmen.

z.B..

int n;
NSScanner * scanner = [[NSScanner alloc] initWithString:@"Your string 1234"];
[scanner scanInt:&n];

1voto

polygenelubricants Punkte 362173

Hierfür können Sie regex verwenden: Sie wollen mit \d+ d.h. eine von Null verschiedene Ziffernfolge.

Verwandte Fragen


Andernfalls können Sie einfach manuell die Zeichen in der Zeichenfolge durchgehen und eine beliebige zusammenhängende Folge von Ziffern finden.

1voto

Zorayr Punkte 21896

Eigenständige Lösung:

+ (NSString *)extractNumberFromText:(NSString *)text
{
  NSCharacterSet *nonDigitCharacterSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
  return [[text componentsSeparatedByCharactersInSet:nonDigitCharacterSet] componentsJoinedByString:@""];
}

Behandelt die folgenden Fälle:

  • @"1234" @"1234"
  • @"001234" @"001234"
  • @"leading text get removed 001234" @"001234"
  • @"001234 trailing text gets removed" @"001234"
  • @"a0b0c1d2e3f4" @"001234"

Ich hoffe, das hilft!

0voto

Shishir.bobby Punkte 10906

DIES IST, WAS ICH SCHLIESSLICH GETAN MIT

NSString *newString = [[theXML componentsSeparatedByCharactersInSet: [[NSCharacterSet decimalDigitCharacterSet] invertedSet]] componentsJoinedByString:@""];
----------------------------------------

NSString *newStr = [newString substringWithRange:NSMakeRange(1, [newString length]-1)];
----------------------------------------

Und ich bin fertig.

0voto

Hugues BR Punkte 2188

StringByTrimmingCharactersInSet entfernt einfach Zeichen am Ende oder Anfang einer Zeichenkette.

z. B.: "abc 10 cd" -> 10 (das funktioniert)

z. B.: "abc 10 a 1" -> "10 a 1" (das funktioniert nicht)

Die Verwendung von Regex scheint eine bessere Idee zu sein.

iphone sdk - Alle Zeichen außer den Zahlen 0-9 aus einer Zeichenkette entfernen

EDIT:

Prüfen Sie nicht die akzeptierte Antwort, sondern diejenige mit mehr als 50 Stimmen

NSString * number = @"(555) 555-555 Office";
NSString * strippedNumber = [number stringByReplacingOccurrencesOfString:@"[^0-9]" withString:@"" options:NSRegularExpressionSearch range:NSMakeRange(0, [number length])];

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X