반응형
정규식을 사용하여 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"
반응형
'IT TIP' 카테고리의 다른 글
메소드를 array_map 함수로 사용할 수 있습니까? (0) | 2020.12.02 |
---|---|
Android에서 일반 Java Array 또는 ArrayList를 Json Array로 변환 (0) | 2020.12.02 |
새로운 C # 5.0 'async'및 'await'키워드가 다중 코어를 사용합니까? (0) | 2020.12.02 |
Ubuntu에 PyCrypto 설치-빌드시 치명적인 오류 (0) | 2020.12.02 |
Django 정적 파일 404 (0) | 2020.12.02 |