IT TIP

정규식을 사용하여 NSString에서 하위 문자열 찾기 / 바꾸기

itqueen 2020. 12. 2. 22:24
반응형

정규식을 사용하여 NSString에서 하위 문자열 찾기 / 바꾸기


정규식을 사용하여 &*;문자열에서 정규식 패턴 Ie의 모든 인스턴스를 찾고 이를 제거하여 반환 값이 일치하지 않는 원래 문자열이되도록하고 싶습니다. 또한 동일한 기능을 사용하여 단어 사이의 여러 공백을 일치시키고 대신 단일 공백을 사용하고 싶습니다. 이러한 기능을 찾을 수 없습니다.

샘플 입력 문자열

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

반환 값은

123 Ross Test 12

이 패턴 "&*또는 여러 개의 공백과 일치하는 항목이있는 경우@"";


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

문자열 확장에서 정규식을 사용하여 코드를 대체하는 문자열

목표 -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

결의

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

이상

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

사용하다

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"

참고 URL : https://stackoverflow.com/questions/9661690/use-regular-expression-to-find-replace-substring-in-nsstring

반응형