Objective-C de dize değiştirme


Yanıtlar:


781

Yöntemi kullanabilirsiniz

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

... alt dize değiştirilmiş yeni bir dize almak için ( NSStringDiğerleri için belgelere bakın )

Örnek kullanım

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

str = [str stringByReplacingOccurrencesOfString:@"string"
                                     withString:@"duck"];

2
Ben NSString ve bir NSMutableString alt sınıf sahip nokta NSString bir örneği değişmez olduğu için olduğunu düşündüm . Her aklı başında insan gibi ben de her gün dizelerden daha çok ördek almayı tercih ederim - sadece içeriğinin üzerine yazdığınız gerçeği strsadece aklımı havaya uçurdu.
ele

1
Ama sanırım bu strsüreçte değişen adres
Colas

16
değişmez. str artık yepyeni bir dize içeriyor. stringByReplacingOccurencesOfString, dizeyi değiştirmez. Sadece yeni bir dize döndürür.
Septiadi Agus

22

NSStringnesneler değiştirilemez (değiştirilemezler), ancak değiştirilebilir bir alt sınıf vardır NSMutableString, bu da size bir dize içindeki karakterleri değiştirmek için çeşitli yöntemler sunar. Muhtemelen en iyi seçeneğinizdir.


10

Birden fazla dize değiştirme istiyorsanız:

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

7

Ayrıca 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

Sorun iOS'taki eski sürümlerde var. en sonda, sağdan sola iyi çalışır. Yaptığım şey şudur:

ilk önce iOS sürümünü kontrol ediyorum:

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

daha:

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

Bu kodun nasıl çalıştığını açıklamak için lütfen düzenle bağlantısını kullanın ve sadece kodu vermeyin, çünkü bir açıklama gelecekteki okuyuculara yardımcı olma olasılığı daha yüksektir. Ayrıca bkz . Nasıl Cevap Verilir . kaynak
Jed Fox
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.