How to replace a character is a string in Objective-C?
6 Answers
You could use the method
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target
withString:(NSString *)replacement
...to get a new string with a substring replaced (See NSString
documentation for others)
Example use
NSString *str = @"This is a string";
str = [str stringByReplacingOccurrencesOfString:@"string"
withString:@"duck"];
-
2I thought the point of having NSString and an NSMutableString subclass was because an instance of NSString is unchangeable. While--like any sane person, I'd rather have ducks than strings any day--the fact that you just overwrote the contents of
str
just blew my mind.– eleApr 1, 2013 at 21:42 -
1
-
16it doesn't change. str now contains a whole new string. stringByReplacingOccurencesOfString does NOT mutate the string. It simply return a new string. Jun 28, 2013 at 8:56
NSString
objects are immutable (they can't be changed), but there is a mutable subclass, NSMutableString
, that gives you several methods for replacing characters within a string. It's probably your best bet.
If you want multiple string replacement:
NSString *s = @"foo/bar:baz.foo";
NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:@"/:."];
s = [[s componentsSeparatedByCharactersInSet: doNotWant] componentsJoinedByString: @""];
NSLog(@"%@", s); // => foobarbazfoo
It also posible string replacement with 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
The problem exists in old versions on the iOS. in the latest, the right-to-left works well. What I did, is as follows:
first I check the iOS version:
if (![self compareCurVersionTo:4 minor:3 point:0])
Than:
// set RTL on the start on each line (except the first)
myUITextView.text = [myUITextView.text stringByReplacingOccurrencesOfString:@"\n"
withString:@"\u202B\n"];
NSString *stringreplace=[yourString stringByReplacingOccurrencesOfString:@"search" withString:@"new_string"];
-
Please use the edit link to explain how this code works and don't just give the code, as an explanation is more likely to help future readers. See also How to Answer. source– Jed FoxJun 9, 2017 at 15:00