Use regular expression to find/replace substring in NSString
NSString *string = @"123 &1245; Ross Test 12";NSError *error = nil;NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"&[^;]*;" options:NSRegularExpressionCaseInsensitive error:&error];NSString *modifiedString = [regex stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, [string length]) withTemplate:@""];NSLog(@"%@", modifiedString);
String replacing code using regex in String extension
Objective-C
@implementation NSString(RegularExpression)- (NSString *)replacingWithPattern:(NSString *)pattern withTemplate:(NSString *)withTemplate error:(NSError **)error { NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern options:NSRegularExpressionCaseInsensitive error:error]; return [regex stringByReplacingMatchesInString:self options:0 range:NSMakeRange(0, self.length) withTemplate:withTemplate];}@end
resolve
NSString *string = @"123 &1245; Ross Test 12";// remove all matches stringNSString *result = [string replacingWithPattern:@"&[\\d]+?;" withTemplate:@"" error:nil];// result = "123 Ross Test 12"
or more
NSString *string = @"123 + 456";// swap numberNSString *result = [string replacingWithPattern:@"([\\d]+)[ \\+]+([\\d]+)" withTemplate:@"$2 + $1" error:nil];// result = 456 + 123
Swift2
extension String { func replacing(pattern: String, withTemplate: String) throws -> String { let regex = try NSRegularExpression(pattern: pattern, options: .CaseInsensitive) return regex.stringByReplacingMatchesInString(self, options: [], range: NSRange(0..<self.utf16.count), withTemplate: withTemplate) }}
Swift3
extension String { func replacing(pattern: String, withTemplate: String) throws -> String { let regex = try RegularExpression(pattern: pattern, options: .caseInsensitive) return regex.stringByReplacingMatches(in: self, options: [], range: NSRange(0..<self.utf16.count), withTemplate: withTemplate) }}
use
var string = "1!I 2\"want 3#to 4$remove 5%all 6&digit and a char right after 7'from 8(string"do { let result = try string.replacing("[\\d]+.", withTemplate: "")} catch { // error}// result = "I want to remove all digit and a char right after from string"