NSString'den karakterler kaldırılsın mı?


95
NSString *myString = @"A B C D E F G";

Boşlukları kaldırmak istiyorum, böylece yeni dize "ABCDEFG" olur.

Yanıtlar:


280

Kullanabilirsin:

NSString *stringWithoutSpaces = [myString 
   stringByReplacingOccurrencesOfString:@" " withString:@""];

Okunabilirlik için lütfen kod parçacıklarını tek aralıklı yazı tipinde biçimlendirebilirsiniz. Şu anda ilk dizeyi ayırt etmek biraz zor
Mike Abdullah

4
"Oluşumlar" ın iki r ile yazıldığına dikkat edin.

artı 256'ya ulaşma umuduyla 1. smh
Will Von Ullrich

Bu YALNIZCA 'boşluklar' iyi davranılmışsa çalışır ASCII değeri = 32 (% 20) karakter. TÜM olası beyaz boşluk karakterlerini kaldırmak için Jim Dovey'in aşağıdaki çözümünü kullanın.
Linasses

80

Aynı anda birden fazla alanı desteklemek veya herhangi bir beyaz alanı desteklemek istiyorsanız, şunu yapabilirsiniz:

NSString* noSpaces =
    [[myString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]
                           componentsJoinedByString:@""];

5
Genel kullanım için daha kullanışlıdır.
mxg

bunu sevdim! Bir telefon numarasındaki tüm özel karakterleri kaldırmak ve yalnızca rakamları tutmak istiyorum.
karim

çok daha kolay: yourString = [yourString stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];
Daniel

3
Kırpma, eşleşen karakterleri dizenin başında ve sonunda oluştuğunda kaldırır, böylece `ABCDEF 'olur.A B C D E F
Jim Dovey

11

Alındığı NSString

stringByReplacingOccurrencesOfString:withString:

Alıcıdaki bir hedef dizenin tüm oluşumlarının başka bir belirli dizeyle değiştirildiği yeni bir dize döndürür.

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement

Parametreler

hedef

The string to replace.

değiştirme

The string with which to replace target.

Geri dönüş değeri

Alıcıdaki tüm hedef oluşumlarının değiştirmeyle değiştirildiği yeni bir dize.


11

Yukarıdakilerin hepsi iyi çalışacaktır. Ancak doğru yöntem şudur:

yourString = [yourString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

TRIM yöntemi gibi çalışacaktır. Tüm ön ve arka boşlukları kaldıracaktır.

Teşekkürler


7
Hayır, yalnızca dizenin başındaki ve sonundaki boşlukları kaldırır, diğer karakterler arasındaki boşlukları kaldırmaz.
Jim Dovey

@JimDovey Yorumumda zaten bu şeyden bahsetmiştim. # TRIM yöntemi gibi çalışacaktır. Tüm ön ve arka boşlukları kaldıracak. #
Mitesh Khatri

2
@MiteshKhatri Yaparsınız, ancak yine de orijinal sorunu çözmez, bu da dizenin ortasındaki tüm beyaz boşlukları kaldırmaktır, yalnızca baştaki ve sondaki beyaz boşluğu değil.
Jim Dovey

@JimDovey tüm boşlukları kaldırmak için aşağıdaki kodu kullanın: MyStr = [MyStr stringByReplacingOccurrencesOfString: @ "" withString: @ ""];
Mitesh Khatri

1
Bu yine de yalnızca ASCII boşluk karakterlerini kaldırır; sıfır genişlikli boşluklar, Unicode bölünmeyen boşluklar, satırsonları, form beslemeleri, sekmeler, dikey sekmeler vb. gibi şeyler dizede kalmaya devam edecektir. Bu nedenle varlığı [NSCharacterSet whitespaceCharacterSet]ve [NSCharacterSet whitespaceAndNewlineCharacterSet].
Jim Dovey

6

dizge değiştirilebilir ise , bu formu kullanarak yerine dönüştürebilirsiniz:

[string replaceOccurrencesOfString:@" "
                        withString:@""
                           options:0
                             range:NSMakeRange(0, string.length)];

Bu, sonucun bir giriş dizesinin değiştirilebilir bir örneği olmasını istiyorsanız da yararlıdır:

NSMutableString * string = [concreteString mutableCopy];
[string replaceOccurrencesOfString:@" "
                        withString:@""
                           options:0
                             range:NSMakeRange(0, string.length)];

3

Bunu deneyebilirsin

- (NSString *)stripRemoveSpaceFrom:(NSString *)str {
    while ([str rangeOfString:@"  "].location != NSNotFound) {
        str = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
    }
    return str;
}

Umarım bu size yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.