[swift] Swift 4에서 문자열 슬라이싱 첨자를 어떻게 사용합니까?
Swift 3으로 작성된 다음과 같은 간단한 코드가 있습니다.
let str = "Hello, playground"
let index = str.index(of: ",")!
let newStr = str.substring(to: index)
Xcode 9 베타 5에서 다음 경고가 표시됩니다.
‘
substring(to:)
‘는 사용되지 않습니다.String
‘partial range from’연산자와 함께 슬라이싱 아래 첨자를 사용하십시오 .
Swift 4 에서 부분 범위가 있는 이 슬라이싱 첨자를 어떻게 사용할 수 있습니까?
답변
당신은해야 빈 한쪽을 떠나 , 따라서 이름 “부분 범위를”.
let newStr = str[..<index]
연산자의 부분 범위도 마찬가지입니다 . 다른 쪽은 비워 두십시오.
let newStr = str[index...]
이 범위 연산자는을 반환합니다 Substring
. 문자열로 변환하려면 String
의 초기화 함수를 사용하십시오.
let newStr = String(str[..<index])
새 하위 문자열에 대한 자세한 내용은 여기를 참조하십시오 .
답변
하위 문자열 (Swift 3)을 문자열 슬라이싱 (Swift 4)으로 변환
스위프트 3, 4의 예 :
let newStr = str.substring(to: index) // Swift 3
let newStr = String(str[..<index]) // Swift 4
let newStr = str.substring(from: index) // Swift 3
let newStr = String(str[index...]) // Swift 4
let range = firstIndex..<secondIndex // If you have a range
let newStr = = str.substring(with: range) // Swift 3
let newStr = String(str[range]) // Swift 4
답변
스위프트 5, 4
용법
let text = "Hello world"
text[0] // H
text[...3] // "Hell"
text[6..<text.count] // world
text[NSRange(location: 6, length: 3)] // wor
암호
import Foundation
public extension String {
subscript(value: Int) -> Character {
self[index(at: value)]
}
}
public extension String {
subscript(value: NSRange) -> Substring {
self[value.lowerBound..<value.upperBound]
}
}
public extension String {
subscript(value: CountableClosedRange<Int>) -> Substring {
self[index(at: value.lowerBound)...index(at: value.upperBound)]
}
subscript(value: CountableRange<Int>) -> Substring {
self[index(at: value.lowerBound)..<index(at: value.upperBound)]
}
subscript(value: PartialRangeUpTo<Int>) -> Substring {
self[..<index(at: value.upperBound)]
}
subscript(value: PartialRangeThrough<Int>) -> Substring {
self[...index(at: value.upperBound)]
}
subscript(value: PartialRangeFrom<Int>) -> Substring {
self[index(at: value.lowerBound)...]
}
}
private extension String {
func index(at offset: Int) -> String.Index {
index(startIndex, offsetBy: offset)
}
}
답변
Swift 4/5에서 더 짧음 :
var string = "123456"
string = String(string.prefix(3)) //"123"
string = String(string.suffix(3)) //"456"
답변
코드를 Swift 4로 변환하는 방법은 다음과 같습니다.
let str = "Hello, playground"
let index = str.index(of: ",")!
let substr = str.prefix(upTo: index)
아래 코드를 사용하여 새 문자열을 만들 수 있습니다.
let newString = String(str.prefix(upTo: index))
답변
(상기 : 인덱스) 부분 문자열 로 변환 … 인덱스]
샘플 확인
let text = "1234567890"
let index = text.index(text.startIndex, offsetBy: 3)
text.substring(from: index) // "4567890" [Swift 3]
String(text[index...]) // "4567890" [Swift 4]
답변
스위프트 5
(자바의 하위 문자열 방법) :
extension String {
func subString(from: Int, to: Int) -> String {
let startIndex = self.index(self.startIndex, offsetBy: from)
let endIndex = self.index(self.startIndex, offsetBy: to)
return String(self[startIndex...endIndex])
}
}
용법:
var str = "Hello, Nick Michaels"
print(str.subString(from:7,to:20))
// print Nick Michaels