2017-02-03 7 views
0

Sagen Sie, Sie haben eine NSString *testString = @"Abcd!!!!";, beachten Sie die vier Ausrufezeichen, wie kann ich alle Ausrufezeichen so effizient wie möglich löschen?Löschen Vorkommen am Ende einer Zeichenfolge - iOS

Die Ausrufezeichen können eine beliebige Anzahl haben und können nur gelöscht werden, wenn sie in aufeinanderfolgender Reihenfolge stehen.

Ein Beispiel könnte sein: NSString *result = @"ABC!D";

+0

ein einfaches Muster ist nur sagen ... "während der letzte ist ein!, Letzte entfernen". – Fattie

Antwort

2

Da Sie, wie viele nicht wissen: NSString *testString = @"ABC!D!!!!!";

Das Ergebnis wäre dann! Wenn Sie die Zeichenfolge entfernen, können Sie dies mit einem regulären Ausdruck tun.

NSString *string = @"ABC!D!!!!!"; 
NSError *error = nil; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"!+$" options:NSRegularExpressionCaseInsensitive error:&error]; 
NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@""]; 
NSLog(@"%@", modifiedString); 

Regex sind nicht immer die meisten effizienter Weg, um diese Art von Problemen zu lösen, aber in diesem Fall, ich glaube nicht, gäbe es einen messbaren Gewinn sei es eine andere Art und Weise zu tun.

+0

Das Zählen wird auf diese Weise nicht funktionieren (es sei denn, du hast eine Regex - Capture - Gruppe erstellt, aber dann werden die Dinge so kompliziert, dass du 'stringByTrimmingCharactersInSet' verwendest. Könntest du nicht einfach die Länge der Original-String auf die Länge der modifizierten Zeichenfolge? – brandonscript

Verwandte Themen