Me gustaría utilizar la expresión regular para buscar todas las instancias de un patrón de expresión regular I. e. &*; en mi cadena y quitar que a partir de entonces, el valor de retorno es la cadena original, sin que ninguno de los partidos. También quisiera usar la misma función para coincidir con varios espacios entre las palabras y tener un espacio único en su lugar. No se pudo encontrar una función de este tipo.

Muestra de la cadena de entrada

NSString *str = @"123 &1245; Ross Test  12";

Valor de retorno debe ser

123 Ross Test 12

Si nada que coincida con este patrón "&* o varios espacios en blanco y los reemplaza con @"";

InformationsquelleAutor Faz Ya | 2012-03-12

2 Comentarios

  1. 158
    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);
    • En ObjC debe utilizar nil en lugar de NULL. Pero NULL trabaja demasiado, ya que es C.
  2. 12

    Cadena de sustitución de código mediante el uso de expresiones regulares en la Cadena de extensión

    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

    resolver

    NSString *string = @"123 &1245; Ross Test  12";
    //remove all matches string
    NSString *result = [string replacingWithPattern:@"&[\d]+?;" withTemplate:@"" error:nil];
    //result = "123  Ross Test  12"

    o más

    NSString *string = @"123 +   456";
    //swap number
    NSString *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)
        }
    }

    uso

    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"
    • Sería mejor cambiar el nombre de nombre de la función para - (NSString *)stringByReplacingWithPattern:(NSString *)pattern withTemplate:(NSString *)withTemplate error:(NSError **)error
    • sería mejor eliminar todos aquellos con

Dejar respuesta

Please enter your comment!
Please enter your name here