Swift 4 업데이트
Swift 4에서는 다시 String
준수 Collection
하므로 문자열의 시작과 끝 을 사용 dropFirst
하고 dropLast
트리밍 할 수 있습니다. 결과는 유형 Substring
이므로 String
생성자에 전달하여 다음 을 반환해야합니다 String
.
let str = "hello"
let result1 = String(str.dropFirst()) // "ello"
let result2 = String(str.dropLast()) // "hell"
dropFirst()
그리고 dropLast()
또한을 Int
드롭 문자의 수를 지정합니다 :
let result3 = String(str.dropLast(3)) // "he"
let result4 = String(str.dropFirst(4)) // "o"
삭제할 문자를 문자열에있는 것보다 더 많이 지정하면 결과는 빈 문자열 ( ""
)이됩니다.
let result5 = String(str.dropFirst(10)) // ""
Swift 3 업데이트
첫 번째 문자를 제거하고 원래 문자열을 변경하려면 @MickMacCallum의 대답을 참조하십시오. 프로세스에서 새 문자열을 생성하려면 substring(from:)
. 확장과 함께합니다 String
, 당신의 추함을 숨길 수 substring(from:)
및 substring(to:)
시작과 끝을 잘라 유용한 추가를 만들 String
:
extension String {
func chopPrefix(_ count: Int = 1) -> String {
return substring(from: index(startIndex, offsetBy: count))
}
func chopSuffix(_ count: Int = 1) -> String {
return substring(to: index(endIndex, offsetBy: -count))
}
}
"hello".chopPrefix() // "ello"
"hello".chopPrefix(3) // "lo"
"hello".chopSuffix() // "hell"
"hello".chopSuffix(3) // "he"
마찬가지로 dropFirst
및 dropLast
그들 앞에,이 함수는 문자열에서 사용할 수있는 충분한 문자가없는 경우 충돌합니다. 발신자에게 적절하게 사용할 책임이 있습니다. 이것은 유효한 설계 결정입니다. 선택 사항을 반환하도록 작성하면 호출자가 풀어야합니다.
스위프트 2.x
에 아아 스위프트 2 , dropFirst
및 dropLast
(이전의 가장 좋은 방법은) 그들이 예전처럼 편리하지 않습니다. 확장명을 사용하면 및 String
의 추악함을 숨길 수 있습니다 .substringFromIndex
substringToIndex
extension String {
func chopPrefix(count: Int = 1) -> String {
return self.substringFromIndex(advance(self.startIndex, count))
}
func chopSuffix(count: Int = 1) -> String {
return self.substringToIndex(advance(self.endIndex, -count))
}
}
"hello".chopPrefix() // "ello"
"hello".chopPrefix(3) // "lo"
"hello".chopSuffix() // "hell"
"hello".chopSuffix(3) // "he"
마찬가지로 dropFirst
및 dropLast
그들 앞에,이 함수는 문자열에서 사용할 수있는 충분한 문자가없는 경우 충돌합니다. 발신자에게 적절하게 사용할 책임이 있습니다. 이것은 유효한 설계 결정입니다. 선택 사항을 반환하도록 작성하면 호출자가 풀어야합니다.
에서 스위프트 1.2 , 당신은 전화를해야합니다 chopPrefix
다음과 같이 :
"hello".chopPrefix(count: 3) // "lo"
또는 _
함수 정의에 밑줄 을 추가 하여 매개 변수 이름을 억제 할 수 있습니다 .
extension String {
func chopPrefix(_ count: Int = 1) -> String {
return self.substringFromIndex(advance(self.startIndex, count))
}
func chopSuffix(_ count: Int = 1) -> String {
return self.substringToIndex(advance(self.endIndex, -count))
}
}
advance
으로 캐스팅 하여 모든 것을 피할 수 있습니다display.text!
. 나는 그것이 좋은 해결책이라고 말하는 것이 아닙니다. 단지 가능한 오해를 바로 잡는 것입니다. NSString을 사용하면 Int로 인덱싱 할 수 있습니다 . -Int로 인덱싱 할 수없는 이유는 유니 코드 때문이 아닙니다. 문자가 여러 복합 코드 포인트로 구성 될 수 있기 때문입니다.