Penggantian string di Objective-C

Jawaban:

781

Anda bisa menggunakan metode ini

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

... untuk mendapatkan string baru dengan substrat diganti (Lihat NSStringdokumentasi untuk orang lain)

Contoh penggunaan

NSString *str = @"This is a string";

str = [str stringByReplacingOccurrencesOfString:@"string"
                                     withString:@"duck"];
epatel
sumber
2
Saya pikir poin memiliki NSString dan subclass NSMutableString adalah karena turunan NSString tidak dapat diubah . Sementara - seperti orang waras, saya lebih suka memiliki bebek daripada string setiap hari - fakta bahwa Anda hanya menimpa isi dari strhanya meniup pikiran saya.
ele
1
Tapi saya kira alamat strberubah dalam proses
Colas
16
itu tidak berubah. str sekarang berisi string yang sama sekali baru. stringByReplacingOccurencesOfString TIDAK mengubah string. Ini hanya mengembalikan string baru.
Septiadi Agus
22

NSStringobjek tidak berubah (tidak dapat diubah), tetapi ada subkelas yang dapat berubah NSMutableString,, yang memberi Anda beberapa metode untuk mengganti karakter dalam string. Mungkin ini taruhan terbaik Anda.

mipadi
sumber
10

Jika Anda ingin penggantian beberapa string:

NSString *s = @"foo/bar:baz.foo";
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"/:."];
s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];
NSLog(@"%@", s); // => foobarbazfoo
tania_S
sumber
7

Ini juga memungkinkan penggantian string dengan stringByReplacingCharactersInRange: withString:

for (int i = 0; i < card.length - 4; i++) {

    if (![[card substringWithRange:NSMakeRange(i, 1)] isEqual:@" "]) {

        NSRange range = NSMakeRange(i, 1);
        card = [card stringByReplacingCharactersInRange:range withString:@"*"];

    }

} //out: **** **** **** 1234
Marlon Ruiz
sumber
0

Masalahnya ada di versi lama di iOS. di terbaru, kanan-ke-kiri berfungsi dengan baik. Apa yang saya lakukan, adalah sebagai berikut:

pertama saya periksa versi iOS:

if (![self compareCurVersionTo:4 minor:3 point:0])

Dari:

// set RTL on the start on each line (except the first)  
myUITextView.text = [myUITextView.text stringByReplacingOccurrencesOfString:@"\n"
                                                           withString:@"\u202B\n"];
Meir
sumber
0
NSString *stringreplace=[yourString stringByReplacingOccurrencesOfString:@"search" withString:@"new_string"];
Shaik Tamim
sumber
Silakan gunakan tautan edit untuk menjelaskan cara kerja kode ini dan jangan hanya memberikan kode, karena penjelasan lebih mungkin membantu pembaca di masa mendatang. Lihat juga Cara Menjawab . sumber
Jed Fox