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

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.


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

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

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

0
NSString *stringreplace=[yourString stringByReplacingOccurrencesOfString:@"search" withString:@"new_string"];

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
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.