자동 고침 시스템을 만들려고하는데 사용자가 대문자로 단어를 입력하면 자동 고침이 작동하지 않습니다. 이 문제를 해결하기 위해 문자열 형식의 사본을 만들어 .lowercaseString을 적용한 다음 비교했습니다. 문자열이 실제로 잘못 입력 된 경우 단어를 수정해야합니다. 그러나 입력 된 단어를 대체하는 단어는 모두 소문자입니다. 따라서 첫 번째 문자에만 .uppercaseString을 적용해야합니다. 나는 원래 내가 사용할 수 있다고 생각
nameOfString[0]
그러나 이것은 분명히 작동하지 않습니다. 문자열의 첫 글자를 대문자로 가져온 다음 첫 글자를 대문자로 전체 문자열을 인쇄하려면 어떻게해야합니까?
도움을 주셔서 감사합니다!
답변
API 지침과 일치하는 변형 및 비 돌연변이 버전 포함
스위프트 3 :
extension String {
func capitalizingFirstLetter() -> String {
let first = String(characters.prefix(1)).capitalized
let other = String(characters.dropFirst())
return first + other
}
mutating func capitalizeFirstLetter() {
self = self.capitalizingFirstLetter()
}
}
스위프트 4 :
extension String {
func capitalizingFirstLetter() -> String {
return prefix(1).uppercased() + self.lowercased().dropFirst()
}
mutating func capitalizeFirstLetter() {
self = self.capitalizingFirstLetter()
}
}
답변
스위프트 5.1 이상
extension StringProtocol {
var firstUppercased: String { prefix(1).uppercased() + dropFirst() }
var firstCapitalized: String { prefix(1).capitalized + dropFirst() }
}
스위프트 5
extension StringProtocol {
var firstUppercased: String { return prefix(1).uppercased() + dropFirst() }
var firstCapitalized: String { return prefix(1).capitalized + dropFirst() }
}
"Swift".first // "S"
"Swift".last // "t"
"hello world!!!".firstUppercased // "Hello world!!!"
"DŽ".firstCapitalized // "Dž"
"Dž".firstCapitalized // "Dž"
"dž".firstCapitalized // "Dž"
답변
스위프트 3.0
“Hello World”
nameOfString.capitalized
또는 “HELLO WORLD”
nameOfString.uppercased
답변
스위프트 4.0
string.capitalized(with: nil)
또는
string.capitalized
그러나 이것은 모든 단어의 첫 글자를 대문자로
Apple의 설명서 :
대문자 문자열은 각 단어의 첫 번째 문자가 해당하는 대문자 값으로 변경되고 나머지 모든 문자는 해당하는 소문자 값으로 설정된 문자열입니다. “단어”는 공백, 탭 또는 줄 종결 자로 구분되는 일련의 문자입니다. 일반적인 구두점 구분 구두점은 고려되지 않으므로이 속성은 일반적으로 여러 단어로 된 문자열에 대해 원하는 결과를 생성하지 않을 수 있습니다. 추가 정보는 getLineStart (_ : end : contentsEnd : for 🙂 메소드를 참조하십시오.
답변
extension String {
func firstCharacterUpperCase() -> String? {
let lowercaseString = self.lowercaseString
return lowercaseString.stringByReplacingCharactersInRange(lowercaseString.startIndex...lowercaseString.startIndex, withString: String(lowercaseString[lowercaseString.startIndex]).uppercaseString)
}
}
let x = "heLLo"
let m = x.firstCharacterUpperCase()
스위프트 5 :
extension String {
func firstCharacterUpperCase() -> String? {
guard !isEmpty else { return nil }
let lowerCasedString = self.lowercased()
return lowerCasedString.replacingCharacters(in: lowerCasedString.startIndex...lowerCasedString.startIndex, with: String(lowerCasedString[lowerCasedString.startIndex]).uppercased())
}
}
답변
.capitalized
신속한 단어 사용 및 전체 단어 사용을위한 첫 번째 문자.uppercased()
답변
스위프트 2.0 (한 줄) :
String(nameOfString.characters.prefix(1)).uppercaseString + String(nameOfString.characters.dropFirst())
