Bu aslında normal ifadeler için son derece uygundur bir durumdur:
NSString *str = @"00000123";
NSString *cleaned = [str stringByReplacingOccurrencesOfString:@"^0+"
withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, str.length)];
Kod sadece bir satır (mantıksal anlamda netlik için eklenen satır sonları) ve hiçbir sınır üzerinde vardır işlediği karakter sayısı.
normal ifade deseninin açıklanması:
^
desen dize başlangıcına demirlemiş gerektiği anlamına gelir. Rakamlar sırasındaki yasal sıfırlarla eşleşmediğinden emin olmak için buna ihtiyacımız var.
0+
parçası, bir veya daha fazla sıfırla eşleşmesi gerektiği anlamına gelir.
Bir araya getirildiğinde, dizenin başlangıcında bir veya daha fazla sıfırın bir dizisiyle eşleşir, ardından bunu boş bir dizeyle değiştirir - yani, önde gelen sıfırları siler. dizesini çok uzun olup olmadığını merak ediyorsan eğer
Siz harikasınız @adali :)) –
hoşgeldiniz :) – adali
Merhaba @adali, ancak dize uzunluğu> 9 olduğunda, bu biraz farklı bir değer verir. Bunu kontrol edin.NSString * str = @ "3103282369"; NSString * clean = [NSString stringWithFormat: @ "% d", [str intValue]]; NSLog (@ "Clean-% @", temiz); çıkış olarak 2147483647 verir. –