Replace only the first instance of a substring in an NSString Replace only the first instance of a substring in an NSString xcode xcode

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)}