2015-03-25 2 views
21

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

См., Например, «bob is tall» И мне бы хотелось, чтобы «Bob Is Tall»

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

+0

вар SomeString = "лол"; someString.capitalized // «Lol» – Alexander

+0

Некоторые другие подробно описывают этот параметр ниже. ;) –

ответ

33

Вы ищете capitalizedString

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

и/или capitalizedStringWithLocale(_:)

Возвращает капитализированные представление приемника, используя указанную локаль.

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

+0

Я не пробовал capitalizedStringWithLocale, поэтому я буду играть с ним и прокомментировать через несколько минут. –

+1

Спасибо. Оказывается, быстрый пример на документах Apple был туманным, что заставило меня за цикл (образно). –

3

Там будет встроенная функция для этого

nameOfString.capitalizedString 

это будет капитализировать каждое слово строки. Для того, чтобы извлечь выгоду только первую букву вы можете использовать:

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

Older Thread

+0

Я пробовал это, и это не сработало для меня. Казалось, это только первое слово. Я нашел поток, который рекомендовал это. –

0

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

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 
} 
} 

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

8

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

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

Конечный результат представляет собой строку «This Is Приговор»

12

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

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

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

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

6

Swift 3:

var lowercased = "hello there" 

var stringCapitalized = lowercased.capitalized 
//prints: "Hello There" 
Смежные вопросы