[ios] Swift에서 문자열이 (접두사)로 시작하거나 (접미사)로 끝나는 것을 확인하는 방법

Swift 문자열이 특정 값으로 시작하거나 끝나는 지 테스트하려고합니다. 다음 방법은 존재하지 않습니다.

var str = "Hello, playground"
str.startsWith("Hello") // error
str.endsWith("ground") // error

접두사 및 접미사 문자열도 얻고 싶습니다. 여기여기에 답변 된대로 부분 문자열을 찾을 수 있지만 범위는 Swift에서 너무 고통 스럽습니다.

더 쉬운 방법이 있습니까?

( 문서를 읽을 때 답변을 우연히 발견 했으며 내 검색어에 대한 답변이 나오지 않았기 때문에 여기에 Q & A를 추가하고 있습니다.)



답변

Swift 4 업데이트

문자열의 시작과 끝 확인

hasPrefix(_:)hasSuffix(_:)메서드를 사용하여 다른 문자열과의 동등성을 테스트 할 수 있습니다 .

let str = "Hello, playground"

if str.hasPrefix("Hello") { // true
    print("Prefix exists")
}

if str.hasSuffix("ground") { // true
    print("Suffix exists")
}

실제 접두사 및 접미사 하위 문자열 얻기

실제 접두사 또는 접미사 하위 문자열을 얻으려면 다음 방법 중 하나를 사용할 수 있습니다. 단순성을 위해 첫 번째 방법을 권장합니다. 모든 방법은 다음 str과 같이 사용 됩니다.

let str = "Hello, playground"

방법 1 : (권장) prefix(Int)suffix(Int)

let prefix = String(str.prefix(5)) // Hello
let suffix = String(str.suffix(6)) // ground

제 생각에는 이것이 더 나은 방법입니다. 아래의 방법 2 및 3과 달리이 방법은 인덱스가 범위를 벗어나도 충돌하지 않습니다. 문자열의 모든 문자를 반환합니다.

let prefix = String(str.prefix(225)) // Hello, playground
let suffix = String(str.suffix(623)) // Hello, playground

물론 때때로 충돌은 코드에 문제가 있음을 알려주기 때문에 좋습니다. 따라서 아래의 두 번째 방법도 고려하십시오. 인덱스가 범위를 벗어나면 오류가 발생합니다.

방법 2 : prefix(upto:)suffix(from:)

Swift String 인덱스는 특수 문자 (예 : 이모 지)를 고려해야하기 때문에 까다 롭습니다. 그러나 색인을 얻으면 접두사 또는 접미사를 쉽게 얻을 수 있습니다. (에 대한 다른 답변 을 참조하십시오 String.Index.)

let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str.prefix(upTo: prefixIndex)) // Hello

let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str.suffix(from: suffixIndex)) // ground

경계를 벗어나지 않도록 보호하려면 limitedBy(다시이 답변 참조)을 사용하여 색인을 만들 수 있습니다 .

방법 3 : 아래 첨자

String은 컬렉션이므로 아래 첨자를 사용하여 접두사와 접미사를 가져올 수 있습니다.

let prefixIndex = str.index(str.startIndex, offsetBy: 5)
let prefix = String(str[..<prefixIndex]) // Hello

let suffixIndex = str.index(str.endIndex, offsetBy: -6)
let suffix = String(str[suffixIndex...]) // ground

추가 읽기


답변

접두사 및 접미사 동일

문자열에 특정 문자열 접두사 또는 접미사가 있는지 확인하려면 문자열의 hasPrefix ( 🙂 및 hasSuffix ( 🙂 메서드를 호출합니다 . 둘 다 String 유형의 단일 인수를 사용하고 부울 값을 반환합니다.

애플 문서


답변