gpt4 book ai didi

ios - 如何使用正则表达式ios objective-c 拆分字符串

转载 作者:行者123 更新时间:2023-12-01 18:36:23 25 4
gpt4 key购买 nike

以下是Java的语法:Code.split("(?<=\\D)(?=\\d)");
我想在iOS objective-c 中转换它

字符串代码:LR00001或BLNS-9-M

我希望O / p为:

  • 如果代码是LR00001,那么Array给我两个值。在第0个索引上它给出LR,在第1个索引上它给出我00001
  • 如果代码是BLNS-9-M,则Array [0] BLNS和Array [1] 9-M

  • 此o / p在Java中工作,但在ios objective-c 中需要。

    此正则表达式: (?<=\\D)(?=\\d)表示它在字符串中找到位置,该位置前有一个非数字( \D)字符,后有一个数字( \d)。
    即匹配非数字( \D)和数字( \d)之间的位置。

    按照我尝试过的代码:

    1。
    NSArray *arrComponents = [strCode componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"(?<=\\D)(?=\\d)"]];

    2。
    NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:@"(?<=\\D)(?=\\d)" options:0 error:&error];
    NSArray* matches = [regex matchesInString:strCode options:0 range:NSMakeRange(0, [strStyleCode length])];
    NSTextCheckingResult *match = [regex firstMatchInString:strCode options:0 range: NSMakeRange(0, [strStyleCode length])];
    NSLog(@"group1: %@", [strCode substringWithRange:[match rangeAtIndex:0]]);
    NSLog(@"group2: %@", [strCode substringWithRange:[match rangeAtIndex:1]]);

    3。
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @"(?<=\\D)(?=\\d)"];

    以上所有方法均无效。

    我想要ios objective-c 中的相同输出。

    [LR,00001]
    [BLNS,9-M]

    最佳答案

    您可以先用一个未使用的符号替换所有匹配项,例如,用\x00 null char替换,然后将其拆分:

    NSError *error = nil;
    NSString *str = @"LR00001";
    NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?<=\\D)(?=\\d)" options:nil error:&error];
    NSString *modifiedString = [regex stringByReplacingMatchesInString:str options:0 range:NSMakeRange(0, [str length]) withTemplate:@"\x00"];
    NSArray *chunks = [modifiedString componentsSeparatedByString: @"\x00"];
    for(NSString *c in chunks) {
    NSLog(@"%@", c);
    }

    它打印 LR00001

    参见 online demo

    关于ios - 如何使用正则表达式ios objective-c 拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56413180/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com