Hapus karakter dari NSString?

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

Saya ingin menghapus spasi, jadi string barunya adalah "ABCDEFG".

Raju
sumber

Jawaban:

280

Anda bisa menggunakan:

NSString *stringWithoutSpaces = [myString 
   stringByReplacingOccurrencesOfString:@" " withString:@""];
Tom Jefferys
sumber
Tolong bisakah Anda memformat potongan kode dalam font monospace agar terbaca. Saat ini membedakan string pertama agak rumit
Mike Abdullah
4
Perhatikan bahwa "kemunculan" dieja dengan dua r.
ditambah 1 dengan harapan mencapai 256. smh
Will Von Ullrich
Ini HANYA berfungsi jika 'spasi' berperilaku baik nilai ASCII = 32 (% 20) karakter. Untuk menghapus SEMUA kemungkinan karakter ruang kosong, gunakan solusi Jim Dovey di bawah ini.
Linasses
80

Jika Anda ingin mendukung lebih dari satu ruang pada satu waktu, atau mendukung sembarang ruang kosong, Anda dapat melakukan ini:

NSString* noSpaces =
    [[myString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]
                           componentsJoinedByString:@""];
Jim Dovey
sumber
5
Ini lebih berguna untuk penggunaan umum.
mxg
saya suka itu! Saya ingin menghapus semua karakter khusus di nomor telepon dan hanya menyimpan digit.
karim
jauh lebih mudah: yourString = [yourString stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];
Daniel
3
Pemangkasan hanya menghapus karakter yang cocok ketika muncul di awal dan akhir string, sehingga `ABCDEF` akan menjadi A B C D E F.
Jim Dovey
11

Diambil dari NSString

stringByReplacingOccurrencesOfString:withString:

Mengembalikan string baru di mana semua kemunculan string target di penerima diganti dengan string lain yang diberikan.

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

Parameter

target

The string to replace.

penggantian

The string with which to replace target.

Nilai Kembali

String baru di mana semua kemunculan target di penerima diganti dengan penggantian.

visakh7
sumber
11

Semua di atas akan berfungsi dengan baik. Tetapi metode yang benar adalah ini:

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

Ini akan bekerja seperti metode TRIM. Ini akan menghapus semua ruang depan dan belakang.

Terima kasih

Mitesh Khatri
sumber
7
Tidak, ini hanya menghapus spasi dari awal dan akhir string, bukan spasi di antara karakter lain.
Jim Dovey
@JimDovey Saya sudah menyebutkan hal ini di komentar saya. # Ini akan bekerja seperti metode TRIM. Ini akan menghapus semua ruang depan dan belakang. #
Mitesh Khatri
2
@MiteshKhatri Anda melakukannya, tetapi masih belum menyelesaikan masalah aslinya, yaitu menghapus semua spasi dari tengah string, tidak hanya spasi putih di depan & di belakang.
Jim Dovey
@JimDovey untuk menghapus semua spasi, gunakan kode di bawah ini: MyStr = [MyStr stringByReplacingOccurrencesOfString: @ "" withString: @ ""];
Mitesh Khatri
1
Itu masih hanya akan menghapus karakter spasi ASCII; hal-hal seperti spasi lebar-nol, spasi non-breaking Unicode, baris baru, umpan formulir, tab, tab vertikal, dan seterusnya akan tetap ada dalam string. Oleh karena itu keberadaan [NSCharacterSet whitespaceCharacterSet]dan [NSCharacterSet whitespaceAndNewlineCharacterSet].
Jim Dovey
6

jika string bisa berubah , maka Anda dapat mengubahnya di tempat menggunakan formulir ini:

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

ini juga berguna jika Anda ingin hasilnya menjadi instance string input yang bisa berubah:

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

Anda bisa mencobanya

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

Semoga ini bisa membantu Anda.

Kamleshwar
sumber