반응형
Foundation > NSString 문서를 살펴보면 다음과 같은 문자열 비교/탐색 옵션들이 있다.
이들을 활용하면 문자열을 더욱 간편하게 판별하고 사용할 수 있다.
import CoreFoundation
extension NSString {
public struct CompareOptions : OptionSet {
public static var caseInsensitive: NSString.CompareOptions { get }
public static var literal: NSString.CompareOptions { get }
public static var backwards: NSString.CompareOptions { get }
public static var anchored: NSString.CompareOptions { get }
public static var numeric: NSString.CompareOptions { get }
public static var diacriticInsensitive: NSString.CompareOptions { get }
public static var widthInsensitive: NSString.CompareOptions { get }
public static var forcedOrdering: NSString.CompareOptions { get }
public static var regularExpression: NSString.CompareOptions { get }
}
}
.caseInsensitive
case-sensitive는 대소문자를 구분하여 취급하는 것으로 caseInsensitive는 대소문자를 구분하지 않고 찾아주는 옵션이다.
extension String {
func compareWord(find: String) -> Bool {
return self.range(of: find, options: .caseInsensitive) != nil
}
}
이런식으로 String의 extension으로 선언을 해주고 다음과 같이 활용할 수 있다.
func searchWord(text: String) {
let searchedWordArray = wordsArrayCopy.filter { word -> Bool in
word.name.compareWord(find: text)
}
wordsArray = searchedWordArray
tableView.reloadData()
}
탐색 시 대소문자 상관 없이 검색 문자열과 일치하는 문자열이 있을 경우 배열에 집어넣어 테이블뷰를 reload해준다.
이렇게 하면 '다' 를 검색했을 때, [검색하다, 다람쥐, 다리미, 지우다] 등의 순서로 '다'를 포함한 모든 단어를 반환해준다.
.anchored
: Search is limited to start (or end, if NSBackwardsSearch) of source string.
소스 문자열의 시작 부분으로만 탐색이 제한된다.
'다'를 검색 했을 때, [다람쥐, 다리미] 등 다로 시작하는 단어들만 반환해준다.
다음과 같이 option을 여러개 사용해서 탐색할 수도 있다.
extension String {
func compareWord(find: String) -> Bool {
return self.range(of: find, options: [.caseInsensitive, .anchored]) != nil
}
}
참고 : zedd_CompareOptions 종류,
728x90
반응형
'Swift iOS 앱 개발 > Swift' 카테고리의 다른 글
[Swift iOS] url 이용하여 image 받아오기 (0) | 2021.06.24 |
---|---|
[Swift iOS] swift codable null handling (0) | 2021.06.24 |
[Swift iOS] LaunchScreen duration 이미지 및 노출 시간 설정 (0) | 2021.06.17 |
[Swift iOS] How to detect app entering foreground / background (0) | 2021.06.16 |
[Swift iOS] UITableView scrollToRow 특정 인덱스로 이동 (0) | 2021.06.01 |