Hapus karakter dari NSString?


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

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

Jawaban:


280

Anda bisa menggunakan:

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

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:@""];

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.


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


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)];

3

Anda bisa mencobanya

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

Semoga ini bisa membantu Anda.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.