Replace only the first instance of a substring in an NSString
Assuming the following inputs:
NSString *myString = @"My blue car is bigger then my blue shoes or my blue bicycle";NSString *original = @"blue";NSString *replacement = @"green";
The algorithm is quite simple:
NSRange rOriginal = [myString rangeOfString:original];if (NSNotFound != rOriginal.location) { myString = [myString stringByReplacingCharactersInRange:rOriginal withString:replacement];}
SWIFT 3 and 4 UPDATE:
extension String { func stringByReplacingFirstOccurrenceOfString( target: String, withString replaceString: String) -> String { if let range = self.range(of: target) { return self.replacingCharacters(in: range, with: replaceString) } return self } }
Swift 4 version:
func replacingFirstOccurrence(of string: String, with replacement: String) -> String { guard let range = self.range(of: string) else { return self } return replacingCharacters(in: range, with: replacement)}