Parsing address using Regular Expressions

Objective-C

    NSString *address = @"123 Main Street, New York, NY 10001";
    NSError *error;
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^[0-9]+[A-Za-z\\s]+," options:NSRegularExpressionCaseInsensitive error:&error];
    [regex enumerateMatchesInString:address options:0 range:NSMakeRange(0, address.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop){
        NSString *street = [address substringWithRange:result.range];
        street = [street stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@","]];
        NSLog(@"street: %@", street);
    }];
    
    regex = [NSRegularExpression regularExpressionWithPattern:@",[A-Za-z\\s]+," options:NSRegularExpressionCaseInsensitive error:&error];
    [regex enumerateMatchesInString:address options:0 range:NSMakeRange(0, address.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop){
        NSString *city = [address substringWithRange:result.range];
        city = [city stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@", "]];
        NSLog(@"city: %@", city);
    }];
    
    regex = [NSRegularExpression regularExpressionWithPattern:@",[\\s]*[A-Z]{2}[\\s]" options:NSRegularExpressionCaseInsensitive error:&error];
    [regex enumerateMatchesInString:address options:0 range:NSMakeRange(0, address.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop){
        NSString *state = [address substringWithRange:result.range];
        state = [state stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@", "]];
        NSLog(@"state: %@", state);
    }];
    
    regex = [NSRegularExpression regularExpressionWithPattern:@"[\\s][0-9]{5}" options:NSRegularExpressionCaseInsensitive error:&error];
    [regex enumerateMatchesInString:address options:0 range:NSMakeRange(0, address.length) usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop){
        NSString *zip = [address substringWithRange:result.range];
        zip = [zip stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@", "]];
        NSLog(@"zip: %@", zip);
    }];

Swift

var error:NSError?
let address:NSString = "123 Main Street, New York, NY 10001"
var regex = NSRegularExpression(pattern: "^[0-9]+[A-Za-z\\s]+,", options:.CaseInsensitive, error: &error)
regex?.enumerateMatchesInString(address, options: .WithTransparentBounds, range: NSMakeRange(0, address.length)) {
    (result: NSTextCheckingResult! , _, _) in
    var street:NSString = address.substringWithRange(result.range)
    street = street.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: ","))
    NSLog("street: %@",street);
}

regex = NSRegularExpression(pattern: ",[A-Za-z\\s]+,", options:.CaseInsensitive, error: &error)
regex?.enumerateMatchesInString(address, options: .WithTransparentBounds, range: NSMakeRange(0, address.length)) {
    (result: NSTextCheckingResult! , _, _) in
    var city:NSString = address.substringWithRange(result.range)
    city = city.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: ", "))
    NSLog("city: %@",city);
}

regex = NSRegularExpression(pattern: ",[\\s]*[A-Z]{2}[\\s]", options:.CaseInsensitive, error: &error)
regex?.enumerateMatchesInString(address, options: .WithTransparentBounds, range: NSMakeRange(0, address.length)) {
    (result: NSTextCheckingResult! , _, _) in
    var state:NSString = address.substringWithRange(result.range)
    state = state.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: ", "))
    NSLog("state: %@",state);
}

regex = NSRegularExpression(pattern: "[\\s][0-9]{5}", options:.CaseInsensitive, error: &error)
regex?.enumerateMatchesInString(address, options: .WithTransparentBounds, range: NSMakeRange(0, address.length)) {
    (result: NSTextCheckingResult! , _, _) in
    var zip:NSString = address.substringWithRange(result.range)
    zip = zip.stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString: ", "))
    NSLog("zip: %@",zip);
}

NSAttributedString in Swift

        var mainString: NSMutableAttributedString = NSMutableAttributedString();
        
        var str1: NSMutableAttributedString = NSMutableAttributedString(string: "My Car! ");
        str1.addAttribute(NSForegroundColorAttributeName, value: UIColor.greenColor(), range: NSMakeRange(0, 2));
        var fonts: UIFont? = UIFont(name: "Verdana", size: 40);
        str1.addAttribute(NSFontAttributeName, value: fonts!, range: NSMakeRange(3, 3));
        
        var textAttachment: NSTextAttachment = NSTextAttachment();
        textAttachment.image = UIImage(named: "car");
        var rects: CGRect = textAttachment.bounds;
        rects.size.height = 33;
        rects.size.width = 100;
        var img1: NSAttributedString = NSAttributedString(attachment: textAttachment);
        
        mainString.appendAttributedString(str1)
        mainString.appendAttributedString(img1)
        
        label1.attributedText = mainString

https://github.com/randcode-generator/attributedString/blob/master/attributedString/ViewController.swift