Подтвердить что ты не робот

Как использовать каждое слово в строке с помощью Swift iOS

Есть ли функция, чтобы использовать каждое слово в строке или это ручной процесс?

Например, "Боб высокий" И я бы хотел, чтобы "Боб был высокий"

Конечно, есть что-то, и ни один из ответов Swift IOS, которые я нашел, похоже, не охватывал это.

4b9b3361

Ответ 1

Вы ищете capitalizedString

Обсуждение
Строка с первым символом в каждом слове изменилась на соответствующее значение верхнего регистра, а все остальные символы соответствовали соответствующим нижним регистрам.

и/или capitalizedStringWithLocale(_:)

Возвращает заглавное представление получателя с использованием указанной локали.

Для строк, представленных пользователям, передайте текущую локаль ([NSLocale currentLocale]). Чтобы использовать языковой стандарт системы, пропустите nil.

Ответ 2

Так как iOS 9 доступна функция локализованной капитализации, поскольку буквы с заглавными буквами могут различаться на языках.

if #available(iOS 9.0, *) {
  "istanbul".localizedCapitalizedString
  // In Turkish: "İstanbul"
}

Ответ 3

Пример ответа, приведенного выше.

   var sentenceToCap = "this is a sentence."
println(sentenceToCap.capitalizedStringWithLocale(NSLocale.currentLocale())  )

Конечный результат - это строка "This Is A Sentence"

Ответ 4

Для Swift 3 он был изменен на capitalized.

Обсуждение
Это свойство выполняет каноническое (нелокализованное) отображение. Он подходит для программных операций, которые требуют стабильных результатов, не зависящих от текущей локали. Заглавная строка - это строка с первым символом в каждом слове, измененным на соответствующее значение верхнего регистра, и все остальные символы устанавливаются в соответствующие нижние регистры. "Слово" - это любая последовательность символов, разделенных пробелами, вкладками или терминаторами строк (перечисленные в разделе getLineStart (_: end: contentsEnd: for:)). Некоторая распространенная пунктуация, ограничивающая слово, не учитывается, поэтому это свойство обычно не может давать желаемые результаты для многословных строк. Преобразования случая arent гарантированно симметричны или создают строки той же длины, что и оригиналы. См. Пример с нижним регистром.

Ответ 5

Swift 3:

var lowercased = "hello there"

var stringCapitalized = lowercased.capitalized
//prints:  "Hello There"

Ответ 6

Для этой функции есть встроенная функция

nameOfString.capitalizedString

Это будет использовать каждое слово строки. Чтобы использовать только первую букву, которую вы можете использовать:

nameOfString.replaceRange(nameOfString.startIndex...nameOfString.startIndex, with: String(nameOfString[nameOfString.startIndex]).capitalizedString)

Старая тема

Ответ 7

Вот что я придумал, что, похоже, работает, но я открыт для всего, что лучше.

    func firstCharacterUpperCase(sentenceToCap:String) -> String {

    //break it into an array by delimiting the sentence using a space
    var breakupSentence = sentenceToCap.componentsSeparatedByString(" ")
    var newSentence = ""

    //Loop the array and concatinate the capitalized word into a variable.
    for wordInSentence  in breakupSentence {
        newSentence = "\(newSentence) \(wordInSentence.capitalizedString)"
    }

    // send it back up.
    return newSentence
}

или если я хочу использовать это как расширение класса строки.

extension String {
var capitalizeEachWord:String {
    //break it into an array by delimiting the sentence using a space
    var breakupSentence = self.componentsSeparatedByString(" ")
    var newSentence = ""

    //Loop the array and concatinate the capitalized word into a variable.
    for wordInSentence  in breakupSentence {
        newSentence = "\(newSentence) \(wordInSentence.capitalizedString)"
    }

    // send it back up.
    return newSentence
}
}

Опять же, лучше всего приветствуется.