Swift에서 문자열에 다른 문자열이 포함되어 있는지 확인하려면 어떻게 해야 합니까?
Objective-C
하기 위한 NSString
다음과 같습니다.
NSString *string = @"hello Swift";
NSRange textRange =[string rangeOfString:@"Swift"];
if(textRange.location != NSNotFound)
{
NSLog(@"exists");
}
하지만 스위프트에서 어떻게 해야 합니까?
Swift와 동일한 통화를 수행할 수 있습니다.
스위프트 4 & 스위프트 5
4 은 Swift 4의 String 입니다.Character
스위프트 2와 3에서는 이와 같지 않았으므로 보다 간결한1 코드를 사용할 수 있습니다.
let string = "hello Swift"
if string.contains("Swift") {
print("exists")
}
스위프트 3.0+
var string = "hello Swift"
if string.range(of:"Swift") != nil {
print("exists")
}
// alternative: not case sensitive
if string.lowercased().range(of:"swift") != nil {
print("exists")
}
올드 스위프트
var string = "hello Swift"
if string.rangeOfString("Swift") != nil{
println("exists")
}
// alternative: not case sensitive
if string.lowercaseString.rangeOfString("swift") != nil {
println("exists")
}
저를 포함한 몇몇 사람들이 전화를 해서 이상한 문제에 부딪혔기 때문에 이것이 도움이 되는 해결책이 되길 바랍니다.containsString()
.1
잊지 마. 잊지 마세요.import Foundation
각주
- 문자열에 수집 기능을 사용하면 예를 들어 이모티콘이나 악센트가 있는 문자와 같은 다른 그래프 클러스터를 처리할 때 예상치 못한 결과를 얻을 수 있는 몇 가지 에지 케이스가 있다는 것만 기억하십시오.
연장방식
스위프트 4
extension String {
func contains(find: String) -> Bool{
return self.range(of: find) != nil
}
func containsIgnoringCase(find: String) -> Bool{
return self.range(of: find, options: .caseInsensitive) != nil
}
}
var value = "Hello world"
print(value.contains("Hello")) // true
print(value.contains("bo")) // false
print(value.containsIgnoringCase(find: "hello")) // true
print(value.containsIgnoringCase(find: "Hello")) // true
print(value.containsIgnoringCase(find: "bo")) // false
일반적으로 Swift 4에는 메서드가 포함되어 있지만 iOS 8.0+에서 사용할 수 있습니다.
스위프트 3.1
장을쓸수있다니습확명을 쓸 수 .contains:
그리고.containsIgnoringCase
위해서String
extension String {
func contains(_ find: String) -> Bool{
return self.range(of: find) != nil
}
func containsIgnoringCase(_ find: String) -> Bool{
return self.range(of: find, options: .caseInsensitive) != nil
}
}
이전 버전의 스위프트
extension String {
func contains(find: String) -> Bool{
return self.rangeOfString(find) != nil
}
func containsIgnoringCase(find: String) -> Bool{
return self.rangeOfString(find, options: NSStringCompareOptions.CaseInsensitiveSearch) != nil
}
}
예:
var value = "Hello world"
print(value.contains("Hello")) // true
print(value.contains("bo")) // false
print(value.containsIgnoringCase("hello")) // true
print(value.containsIgnoringCase("Hello")) // true
print(value.containsIgnoringCase("bo")) // false
서류상으로는 전화가containsString()
a a String은 작동해야 합니다.
Swift의 String 유형은 Foundation의 NSString 클래스와 원활하게 연결됩니다.Cocoa 또는 Cocoa Touch에서 Foundation 프레임워크를 사용하는 경우 이 장에서 설명하는 String 기능 외에 사용자가 작성한 String 값을 호출할 수 있는 전체 NSString API가 제공됩니다.문자열 값은 NSString 인스턴스가 필요한 API에도 사용할 수 있습니다.
하지만, 그것은 그렇게 작동하지 않는 것 같습니다.
당신이 하려고 합니다.someString.containsString(anotherString)
입니다.'String' does not contain a member named 'containsString'
.
몇 선택지가 있는데, 그 중 으로 여러분의 하 고 는 의 객 비 스 니 즈 환 경 을 라 몇 서 다 니 가 습 있 남 지 옵 아 션 이 경 을 ▁so 환 ▁your 스 , 니 비 즈 따 ▁options 그String
를로하여목표용-C사를 bridgeToObjectiveC()
다른 두 가지는 명시적으로 사용하는 것을 포함합니다.NSString
그리고 마지막 하나는 캐스팅을 포함합니다.String
완전히NSString
브리징을 통해 얻을 수 있는 이점:
var string = "hello Swift"
if string.bridgeToObjectiveC().containsString("Swift") {
println("YES")
}
으로 자열을다같이명입으력로다니합적시음과문▁an▁the▁as다▁▁by▁stringNSString
다음을 얻을 수 있습니다.
var string: NSString = "hello Swift"
if string.containsString("Swift") {
println("YES")
}
기존 시스템이 있는 경우String
NSString(string: 문자열)을 사용하여 NSString을 초기화할 수 있습니다.
var string = "hello Swift"
if NSString(string: string).containsString("Swift") {
println("YES")
}
그리고 마지막으로, 당신은 현존하는 것을 캐스팅할 수 있습니다.String
완전히NSString
하기와 같이
var string = "hello Swift"
if (string as NSString).containsString("Swift") {
println("YES")
}
또 하나.대/소문자 구분 옵션을 지원합니다.
스위프트 3.0
struct MyString {
static func contains(_ text: String, substring: String,
ignoreCase: Bool = true,
ignoreDiacritic: Bool = true) -> Bool {
var options = NSString.CompareOptions()
if ignoreCase { _ = options.insert(NSString.CompareOptions.caseInsensitive) }
if ignoreDiacritic { _ = options.insert(NSString.CompareOptions.diacriticInsensitive) }
return text.range(of: substring, options: options) != nil
}
}
사용.
MyString.contains("Niels Bohr", substring: "Bohr") // true
iOS 9+
대/소문자 구분 안 함 기능은 iOS 9부터 사용할 수 있습니다.
if #available(iOS 9.0, *) {
"Für Elise".localizedStandardContains("fur") // true
}
7및 2 Xcode 7.1 및 Swift 2.1 준containsString()
저한테는 잘 작동하고 있어요.
let string = "hello swift"
if string.containsString("swift") {
print("found swift")
}
스위프트 4:
let string = "hello swift"
if string.contains("swift") {
print("found swift")
}
대소문자를 구분하지 않는 Swift 4의 예:
let string = "Hello Swift"
if string.lowercased().contains("swift") {
print("found swift")
}
또는 대소문자를 구분하지 않고 사용하는 경우String
확장명:
extension String {
func containsIgnoreCase(_ string: String) -> Bool {
return self.lowercased().contains(string.lowercased())
}
}
let string = "Hello Swift"
let stringToFind = "SWIFT"
if string.containsIgnoreCase(stringToFind) {
print("found: \(stringToFind)") // found: SWIFT
}
print("string: \(string)")
print("stringToFind: \(stringToFind)")
// console output:
found: SWIFT
string: Hello Swift
stringToFind: SWIFT
Swift 4.2에서
사용하다
func contains(_ str: String) -> Bool
예
let string = "hello Swift"
let containsSwift = string.contains("Swift")
print(containsSwift) // prints true
> SWIFT 3.0에서
let str = "Hello Swift"
if str.lowercased().contains("Swift".lowercased()) {
print("String Contains Another String")
} else {
print("Not Exists")
}
산출량
String Contains Another String
Swift에서는 다음 코드를 사용하여 매우 쉽게 이 작업을 수행할 수 있습니다.
let string = "hello Swift";
let subString = (string as NSString).containsString("Swift")
if(subString){println("Exist")}
여기에 있는 모든 답변 중에서, 저는 그들이 작동하지 않거나 약간의 해킹이라고 생각합니다(NSString으로 캐스트백).이에 대한 정답은 다른 베타 릴리스에 따라 변경되었을 가능성이 높습니다.
제가 사용하는 것은 다음과 같습니다.
let string: String = "hello Swift"
if string.rangeOfString("Swift") != nil
{
println("exists")
}
베타 5에서는 "!= 0"이 필요하게 되었습니다.
여기 답의 부록일 뿐입니다.
다음을 사용하여 로컬 대소문자 구분 안 함 테스트를 수행할 수도 있습니다.
- (BOOL)localizedCaseInsensitiveContainsString:(NSString *)aString
예:
import Foundation
var string: NSString = "hello Swift"
if string.localizedCaseInsensitiveContainsString("Hello") {
println("TRUE")
}
갱신하다
이 문서는 iOS 및 Mac OS X 10.10.x용 Foundation Framework의 일부이며 원래 게시 당시에는 10.10의 일부였습니다.
문서 생성 : 2014-06-05 12:26:27-0700 OS X 릴리즈 노트 저작권 © 2014 Apple Inc.무단 전재 금지.
OS X 10.10 릴리스 정보 코코아 기초 프레임워크
NSString에는 다음과 같은 두 가지 편리한 방법이 있습니다.
- (BOOL)containsString:(NSString *)str;
- (BOOL)localizedCaseInsensitiveContainsString:(NSString *)str;
여기 빠른 운동장에서 제가 처음으로 시도한 것이 있습니다.두 개의 새로운 기능(포함 및 포함)을 제공하여 String을 확장합니다.케이스 무시)
extension String {
func contains(other: String) -> Bool{
var start = startIndex
do{
var subString = self[Range(start: start++, end: endIndex)]
if subString.hasPrefix(other){
return true
}
}while start != endIndex
return false
}
func containsIgnoreCase(other: String) -> Bool{
var start = startIndex
do{
var subString = self[Range(start: start++, end: endIndex)].lowercaseString
if subString.hasPrefix(other.lowercaseString){
return true
}
}while start != endIndex
return false
}
}
이렇게 사용합니다.
var sentence = "This is a test sentence"
sentence.contains("this") //returns false
sentence.contains("This") //returns true
sentence.containsIgnoreCase("this") //returns true
"This is another test sentence".contains(" test ") //returns true
어떤 피드백이든 환영합니다 :)
말씀하신 대로 하시면 됩니다.
import Foundation
...
string.contains("Swift");
문서에서:
스위프트의
String
은 Foundation Foundation과 하게 연결됩니다.NSString
Cocoa Touch에서 class. 만약 당신이 코코아 또는 코코아 터치의 파운데이션 프레임워크로 작업하고 있다면, 전체NSString
는 모든 API를 할 수 .String
이 장에서 설명하는 String 기능 외에 사용자가 작성하는 값입니다.문자열 값은 NSString 인스턴스가 필요한 API에도 사용할 수 있습니다.
당신은 해야 합니다.import Foundation
를 NSString
메서드를 사용하여 Swift의 String 클래스에서 사용할 수 있도록 합니다.
여기 있습니다.
let s = "hello Swift"
if let textRange = s.rangeOfString("Swift") {
NSLog("exists")
}
사용자 지정 코드를 작성할 필요가 없습니다.1.2 버전부터 Swift는 이미 필요한 모든 방법을 갖추고 있습니다.
- 길이 : " 문열길가져기오":
count(string)
; - 문자열이 포함되어 합니다.
contains(string, substring)
; - 문자열로 합니다.
startsWith(string, substring)
- 등
인 스위프트 3
if((a.range(of: b!, options: String.CompareOptions.caseInsensitive, range: nil, locale: nil)) != nil){
print("Done")
}
여기예요.Xcode 8과 Swift 3을 준비합니다.
import UIKit
let mString = "This is a String that contains something to search."
let stringToSearchUpperCase = "String"
let stringToSearchLowerCase = "string"
mString.contains(stringToSearchUpperCase) //true
mString.contains(stringToSearchLowerCase) //false
mString.lowercased().contains(stringToSearchUpperCase) //false
mString.lowercased().contains(stringToSearchLowerCase) //true
string.containsString은 10.10 Yosemite(아마도 iOS8)에서만 사용할 수 있습니다.또한 10.9에서 Objective C 충돌로 연결합니다.NSF 문자열을 NSF 문자열로 전달하려고 합니다.차이는 모르겠지만 OS X 10.9 앱에서 이 코드를 실행하면 10.9 barfs라고 말할 수 있습니다.
다음은 Swift와 10.9 및 10.10의 차이점입니다. https://developer.apple.com/library/prerelease/mac/documentation/General/Reference/APIDiffsMacOSX10_10SeedDiff/index.html containsString은 10.10에서만 사용할 수 있습니다.
위의 문자열 범위는 10.9에서 잘 작동합니다.10.9에서 개발하는 것이 Xcode 베타2로 매우 안정적이라는 것을 알게 되었습니다.저는 놀이터를 통해서나 놀이터의 명령줄 버전을 사용하지 않습니다.적절한 프레임워크를 가져오면 자동 완성이 매우 도움이 된다는 것을 알게 되었습니다.
Xcode 8/Swift 3 버전:
let string = "hello Swift"
if let range = string.range(of: "Swift") {
print("exists at range \(range)")
} else {
print("does not exist")
}
if let lowercaseRange = string.lowercased().range(of: "swift") {
print("exists at range \(lowercaseRange)")
} else {
print("does not exist")
}
사용할 수도 있습니다.contains
:
string.contains("swift") // false
string.contains("Swift") // true
필요한 부분을 포함하여 서브스트링을 확인하는 빠른 4가지 방법Foundation
(또는)UIKit
) 프레임워크 가져오기:
import Foundation // or UIKit
let str = "Oh Canada!"
str.contains("Can") // returns true
str.contains("can") // returns false
str.lowercased().contains("can") // case-insensitive, returns true
~하지 않는 한Foundation
(또는)UIKit
) 프레임워크를 가져왔습니다.str.contains("Can")
컴파일러 오류가 발생합니다.
이 대답은 manojlds의 대답을 반박하는 것이고, 그것은 완전히 맞습니다.왜 이렇게 많은 답변이 이렇게 많은 문제를 다시 작성하는 데 어려움을 겪는지 모르겠습니다.Foundation
의String.contains(subString: String)
방법.
swift 4의 새로운 구문으로 당신은 그냥
string.contains("Swift 4 is the best")
문자열은 문자열 변수입니다.
스위프트 5, 대소문자 구분 안 함:
if string.localizedLowercase.contains("swift".localizedLowercase){
// your code here
}
'Hello'가 포함되어 있는지 확인합니다.
let s = "Hello World"
if s.rangeOfString("Hello") != nil {
print("Yes it contains 'Hello'")
}
// Search string exist in employee name finding.
var empName:NSString! = employeeDetails[filterKeyString] as NSString
Case sensitve search.
let rangeOfSearchString:NSRange! = empName.rangeOfString(searchString, options: NSStringCompareOptions.CaseInsensitiveSearch)
// Not found.
if rangeOfSearchString.location != Foundation.NSNotFound
{
// search string not found in employee name.
}
// Found
else
{
// search string found in employee name.
}
Swift 3: 여기서 문자열에 포함되어 있는지 확인하거나 검색 텍스트를 기반으로 컬렉션을 필터링하기 위해 문자열을 검색할 수 있는 스마트 검색 확장자를 볼 수 있습니다.
https://github.com/magonicolas/Swift-Smart-String-Search
한 문자열에 다른 하위 문자열이 포함되어 있는지 확인하고 싶다면 이렇게 확인할 수도 있습니다.
var name = String()
name = "John has two apples."
자, 이 특정 문자열에서 과일 이름 '사과'가 포함되어 있는지 알고 싶다면 할 수 있습니다.
if name.contains("apple") {
print("Yes , it contains fruit name")
} else {
print("it does not contain any fruit name")
}
이것이 당신에게 효과가 있기를 바랍니다.
iOS 8 이상에서는 이 두 가지를 사용할 수 있습니다.NSString
메서드:
@availability(iOS, introduced=8.0)
func containsString(aString: String) -> Bool
@availability(iOS, introduced=8.0)
func localizedCaseInsensitiveContainsString(aString: String) -> Bool
몇 가지 흥미로운 사용 사례를 발견했습니다.이러한 변형은 rangeOfString 방법을 사용하며 Swift 2.0에서 Strings의 검색 및 비교 기능을 가장 잘 사용하는 방법을 보여주는 동등한 예제를 포함합니다.
//In viewDidLoad() I assign the current object description (A Swift String) to self.loadedObjectDescription
self.loadedObjectDescription = self.myObject!.description
나중에 self.myObject를 변경한 후 다음 문자열 비교 루틴(Bool을 반환하는 게으른 변수로 설정)을 참조할 수 있습니다.이를 통해 언제든지 상태를 확인할 수 있습니다.
lazy var objectHasChanges : Bool = {
guard self.myObject != nil else { return false }
return !(self.loadedObjectDescription == self.myObject!.description)
}()
이러한 변형은 때때로 해당 개체에서 누락된 속성을 분석해야 할 때 발생합니다.문자열 검색을 사용하면 0(개체를 만들 때 기본값)으로 설정된 특정 하위 문자열을 찾을 수 있습니다.
lazy var isMissingProperty : Bool = {
guard self.myObject != nil else { return true }
let emptyPropertyValue = "myProperty = nil"
return (self.myObject!.description.rangeOfString(emptyPropertyValue) != nil) ? true : false
}()
SWIFT 4는 매우 쉽습니다!!
if (yourString.contains("anyThing")) {
print("Exist")
}
언급URL : https://stackoverflow.com/questions/24034043/how-do-i-check-if-a-string-contains-another-string-in-swift
'programing' 카테고리의 다른 글
Python 3.5.1용 urllib2를 설치해야 함 (0) | 2023.05.09 |
---|---|
Azure 앱 서비스와 클라우드 서비스의 차이점 (0) | 2023.05.09 |
Xcode 4로 업그레이드한 후 파일 경고 누락 (0) | 2023.05.09 |
작은 테이블에서 중복 행 삭제 (0) | 2023.05.09 |
.gitignore를 사용하지 않고 추적되지 않은 파일이 표시되지 않도록 'git status'를 어떻게 해야 합니까? (0) | 2023.05.04 |