Swift에서 문자열에서 첫 번째 문자를 제거하는 가장 간결한 방법은 무엇입니까?
문자열에서 첫 번째 문자를 삭제하고 싶습니다.지금까지 제가 생각해낸 것 중 가장 간결한 것은 다음과 같습니다.
display.text = display.text!.substringFromIndex(advance(display.text!.startIndex, 1))
스트링에 인덱스를 붙일 수 없다는 거 알아요Int유니코드 때문인데, 이 해결법은 너무 장황한 것 같아요.가가간른른른른른른른른른른른른른?
Swift 3을 사용하는 경우 이 답변의 두 번째 섹션을 무시해도 됩니다.좋은 소식은 이것이 다시 실제로 간결해졌다는 것이다!String의 새로운 제거(at:) 메서드를 사용하는 것 뿐입니다.
var myString = "Hello, World"
myString.remove(at: myString.startIndex)
myString // "ello, World"
는 글로벌한 것을 .dropFirst()기능을 합니다.
let original = "Hello" // Hello
let sliced = dropFirst(original) // ello
짧고 명확하며 슬라이서블 프로토콜을 준수하는 모든 작업에 적합합니다.
Swift 2를 사용하는 경우 이 답변이 변경되었습니다.dropFirst는 사용할 수 있지만 문자열에서 첫 번째 문자를 삭제하지 않으면 사용할 수 없습니다.characters[String] (스트링) [Drop First] (먼저 드롭)
let original = "Hello" // Hello
let sliced = String(original.characters.dropFirst()) // ello
다른 으로는 접미사 할 수 .UTF16View스트링
let original = "Hello" // Hello
let sliced = String(suffix(original.utf16, original.utf16.count - 1)) // ello
이 모든 것은 제가 처음에 제공한 솔루션이 새로운 버전의 Swift에서는 가장 간결한 방법이 아니라는 것을 증명하는 것입니다.@chris를 사용한 @ 것을 합니다.removeAtIndex()간단하고 직관적인 솔루션을 찾고 있다면 말이죠.
var original = "Hello" // Hello
let removedChar = original.removeAtIndex(original.startIndex)
original // ello
또한 @vacawama가 아래 코멘트에서 지적한 바와 같이 원래 String을 수정하지 않는 또 다른 옵션은 substring From Index를 사용하는 것입니다.
let original = "Hello" // Hello
let substring = original.substringFromIndex(advance(original.startIndex, 1)) // ello
"String" "Substring With Range" "Substring With Range" "Substring With Range" "Substring With Range" "Substring" "Substring With Range" "Substring With Range" "Substring With Range".startIndex + n > endIndex - m.
let original = "Hello" // Hello
let newStartIndex = advance(original.startIndex, 1)
let newEndIndex = advance(original.endIndex, -1)
let substring = original.substringWithRange(newStartIndex..<newEndIndex) // ell
마지막 행은 첨자 표기법을 사용하여 작성할 수도 있습니다.
let substring = original[newStartIndex..<newEndIndex]
Swift 4 업데이트
4에서는 Swift 4에서StringCollectiondropFirst ★★★★★★★★★★★★★★★★★」dropLast줄의 시작과 끝을 잘라냅니다.결과는 유형입니다.Substring 때문에 아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아.String: " to a constructor"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이러한 함수는 String에 사용할 수 있는 문자가 부족하면 크래시됩니다.그것들을 올바르게 사용할 책임은 발신자에게 있습니다.이것은 유효한 설계 결정입니다.그 후 발신자가 포장을 해제해야 하는 옵션을 반환하기 위해 그것들을 쓸 수 있다.
스위프트 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이러한 함수는 String에 사용할 수 있는 문자가 부족하면 크래시됩니다.그것들을 올바르게 사용할 책임은 발신자에게 있습니다.이것은 유효한 설계 결정입니다.그 후 발신자가 포장을 해제해야 하는 옵션을 반환하기 위해 그것들을 쓸 수 있다.
Swift 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))
}
}
스위프트 2.2
'advanced'를 사용할 수 없습니다. 인덱스에서 'advancedBy(n)' 메서드를 호출합니다.
func chopPrefix(count: Int = 1) -> String {
return self.substringFromIndex(self.startIndex.advancedBy(count))
}
func chopSuffix(count: Int = 1) -> String {
return self.substringFromIndex(self.endIndex.advancedBy(count))
}
Swift 3.0
func chopPrefix(_ count: Int = 1) -> String {
return self.substring(from: self.characters.index(self.startIndex, offsetBy: count))
}
func chopSuffix(_ count: Int = 1) -> String {
return self.substring(to: self.characters.index(self.endIndex, offsetBy: -count))
}
스위프트 3.2
문자열의 내용을 문자 집합으로 표시한 보기입니다.
@available(swift, deprecated: 3.2, message: "Please use String or Substring directly") public var characters: String.CharacterView
func chopPrefix(_ count: Int = 1) -> String {
if count >= 0 && count <= self.count {
return self.substring(from: String.Index(encodedOffset: count))
}
return ""
}
func chopSuffix(_ count: Int = 1) -> String {
if count >= 0 && count <= self.count {
return self.substring(to: String.Index(encodedOffset: self.count - count))
}
return ""
}
스위프트 4
extension String {
func chopPrefix(_ count: Int = 1) -> String {
if count >= 0 && count <= self.count {
let indexStartOfText = self.index(self.startIndex, offsetBy: count)
return String(self[indexStartOfText...])
}
return ""
}
func chopSuffix(_ count: Int = 1) -> String {
if count >= 0 && count <= self.count {
let indexEndOfText = self.index(self.endIndex, offsetBy: -count)
return String(self[..<indexEndOfText])
}
return ""
}
}
원하는 최종 결과(변환 대 비변환)에 따라 달라집니다.
Swift 4.1 현재:
음소거:
var str = "hello"
str.removeFirst() // changes str
변이 없음:
let str = "hello"
let strSlice = str.dropFirst() // makes a slice without the first letter
let str2 = String(strSlice)
주의:
- 가 한 더 했습니다.
nonmutating를를들들들들들들주관적으로 마지막 두 단계를 결합하는 것이 더 간결할 것이다. - 「 」의
dropFirstSwift API Design Guidelines를 제대로 이해하고 있다면dropFirstdroppingFirst변이가 없기 때문입니다.[ ] [ ] :)
Swift 2에서 다음을 수행합니다.
let cleanedString = String(theString.characters.dropFirst())
Swift 문자열을 이해하려면 https://www.mikeash.com/pyblog/friday-qa-2015-11-06-why-is-swifts-string-api-so-hard.html을 추천합니다.
이건 어때?
s.removeAtIndex(s.startIndex)
물론 이것은 문자열이 변경 가능하다고 가정합니다.삭제된 문자를 반환하지만 원래 문자열은 변경됩니다.
앞의 답변은 꽤 괜찮지만, 오늘 시점에서는 이것이 Swift 4의 문자열에서 첫 번째 문자를 삭제하는 가장 간결한 방법이라고 생각합니다.
var line: String = "This is a string..."
var char: Character? = nil
char = line.removeFirst()
print("char = \(char)") // char = T
print("line = \(line)") // line = his is a string ...
한 것은 만, 프리픽스는 간단하게 할 수 .++ ...timeout,
public prefix func ++ <I: ForwardIndexType>(index: I) -> I {
return advance(index, 1)
}
그 후 매우 간결하게 사용할 수 있습니다.
str.substringFromIndex(++str.startIndex)
Swift 2에서는 다음 String 확장자를 사용합니다.
extension String
{
func substringFromIndex(index: Int) -> String
{
if (index < 0 || index > self.characters.count)
{
print("index \(index) out of bounds")
return ""
}
return self.substringFromIndex(self.startIndex.advancedBy(index))
}
}
display.text = display.text!.substringFromIndex(1)
"en_US, fr_CA, es_US".chopSuffix(5).chopPrefix(5) // ", fr_CA",
extension String {
func chopPrefix(count: Int = 1) -> String {
return self.substringFromIndex(self.startIndex.advancedBy(count))
}
func chopSuffix(count: Int = 1) -> String {
return self.substringToIndex(self.endIndex.advancedBy(-count))
}
}
문자열에서 첫 번째 문자를 제거하려면
let choppedString = String(txtField.text!.characters.dropFirst())
다음은 Swift4 크래시 저장 버전입니다.chopPrefix 남김, 남김chopSuffix★★★★★★★★★★★★★★…
extension String {
func chopPrefix(_ count: Int = 1) -> String {
return count>self.count ? self : String(self[index(self.startIndex, offsetBy: count)...])
}
}
스위프트3
extension String {
func chopPrefix(_ count: UInt = 1) -> String {
return substring(from: characters.index(startIndex, offsetBy: Int(count)))
}
func chopSuffix(_ count: UInt = 1) -> String {
return substring(to: characters.index(endIndex, offsetBy: -Int(count)))
}
}
class StringChopTests: XCTestCase {
func testPrefix() {
XCTAssertEqual("original".chopPrefix(0), "original")
XCTAssertEqual("Xfile".chopPrefix(), "file")
XCTAssertEqual("filename.jpg".chopPrefix(4), "name.jpg")
}
func testSuffix() {
XCTAssertEqual("original".chopSuffix(0), "original")
XCTAssertEqual("fileX".chopSuffix(), "file")
XCTAssertEqual("filename.jpg".chopSuffix(4), "filename")
}
}
언급URL : https://stackoverflow.com/questions/28445917/what-is-the-most-succinct-way-to-remove-the-first-character-from-a-string-in-swi
'source' 카테고리의 다른 글
| Python에서 datetime 객체를 인식(순진하지 않음)시키는 방법 (0) | 2023.04.12 |
|---|---|
| Python을 사용하여 다른 Excel 파일에서 복사한 열로 Excel 파일을 작성합니다. (0) | 2023.04.12 |
| Windows 의 빌트인 기능만을 사용해 스크립트를 압축 또는 압축 해제하려면 어떻게 해야 합니까? (0) | 2023.04.12 |
| Windows의 Postgresql 구성 파일 'postgresql.conf'는 어디에 있습니까? (0) | 2023.04.12 |
| Realm Swift: 결과를 Swift Array로 변환 (0) | 2023.04.12 |