2011-01-10 8 views
64

içinde boşluktan dize kaldırım birkaç dizim var. Bazılarında başlangıçta bir boşluk var ve bazıları değil. Bir dizenin bir boşluk ile başlayıp başlamadığını kontrol etmek istiyorum ve eğer varsa kaldırın.Objectition-C

+0

Küçük bir arama incitmez. [Kakao Touch'da bir dizeden boşlukları kesmenin en iyi yolu nedir?] 'A bakın. (Http://stackoverflow.com/questions/474270/whats-the-best-way-to-trim-whitespace-from-a -kring-in-kakao-touch) – Abizern

cevap

192

NSString sınıfında bunun için bir yöntem var. stringByTrimmingCharactersInSet:(NSCharacterSet *)set'u kontrol edin. Sen parametre olarak [NSCharacterSet whitespaceCharacterSet] kullanmalıdır:

NSString *foo = @" untrimmed string "; 
NSString *trimmed = [foo stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
+4

Bu, aynı zamanda (eğer orijinal soru baştan kaldırmak için sorar) orijinal boşluk bırakacaktır (orijinal soru sorar) – lnafziger

+0

'stringByTrimmingCharactersInSet' sadece karakterleri baştan kaldırır ve dizenin sonu, ortadakiler değil, bir dizenin ortasındaki boşlukları çıkarmaya çalışanlar için, [[stringimStyle stringByReplacingOccurrencesOfString: @ "" withString: @ ""] '. –

65

Aşağıdaki gibi whitespaceAndNewlineCharacterSet NSCharacterSet ile stringByTrimmingCharactersInSet NSString yöntemi kullanabilirsiniz:

NSString *testString = @" Eek! There are leading and trailing spaces "; 
NSString *trimmedString = [testString stringByTrimmingCharactersInSet: 
          [NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
+2

+1 tavsiye etmek için whitespaceCharacterSet yerine whitespaceAndNewlineCharacterSet –

+1

-1, yeni satırları içermemesi için boşlukları yeniden tanımlamak üzere Apple'a (bunun yerine yeni bir inlineWhitespaceCharacterSet yapmış olmalıydı) – AlexChaffee

+0

Ayrıca sondaki boşlukları kırpın (ki bu da istenebilir veya olmayabilir). (Asıl soru, onu baştan kaldırmayı ister). – lnafziger

6

Bu yalnızca önde gelen boşluk kaldıracaktır.

mystring 123 , length 9 
mystring 123 , length 6 
+0

Bu, önde gelen boşlukları kesmek için en iyi çözümdür – jcpennypincher

5

NSString *myString = @" 123 "; 
NSLog(@"mystring %@, length %d",myString, myString.length); 
NSRange range = [myString rangeOfString:@"^\\s*" options:NSRegularExpressionSearch]; 
myString = [myString stringByReplacingCharactersInRange:range withString:@""]; 
NSLog(@"mystring %@, length %d",myString, myString.length); 

çıkış yazdım gereken kod miktarını azaltmak için hızlı bir makro yazdım.

Adım 1: uygulamanızın PCH dosyası düzenleme bu Proje Adı-Prefix.pch adlı olmalıdır

#define TRIM(string) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] 

Adım 2: Bir dize

NSLog(@"Output: %@ %@", TRIM(@"Hello  "), TRIM(@"World  ")); 

Output: Hello World 
kırpmak istediğinizde yolu daha az kod yazma keyfini