Сделать заглавной первую букву каждого предложения

Как сделать заглавной первую букву каждого предложения в строке? Должен ли я использовать .capitalisedString?


person Tom Coomer    schedule 27.11.2014    source источник
comment
Смотрите мой ответ здесь: stackoverflow.com/questions/2432452/   -  person Ken Thomases    schedule 27.11.2014
comment
@MaxMacLeod: не 100% дубликат. Упомянутый поток показывает, как сделать заглавными первый символ строки, а не каждого предложения в строке.   -  person Martin R    schedule 27.11.2014
comment
@MaxMacLeod Нет. Обратите внимание, что речь идет о строке с несколькими предложениями. Не одна струна.   -  person Kirsteins    schedule 27.11.2014
comment
хорошо, теперь я вижу, что точка принята   -  person Max MacLeod    schedule 27.11.2014


Ответы (2)


Вы можете перечислить String в предложениях, используя NSStringEnumerationOptions.BySentences. Но он обнаруживает «предложение», только если первый символ в верхнем регистре.

Итак, это может быть не идеально, но вы можете попробовать это:

import Foundation

let text:String = "lorem ipsum dolor elit, sed aliqfuas. imfs enim ad veniam, quis nostrud consequat? duis aute irure dolor in pariatur."

var result = ""
text.uppercaseString.enumerateSubstringsInRange(text.startIndex..<text.endIndex, options: .BySentences) { (_, range, _, _) in
//  ^^^^^^^^^^^^^^^^ enumerate all upper cased string

    var substring = text[range] // retrieve substring from original string

    let first = substring.removeAtIndex(substring.startIndex)
    result += String(first).uppercaseString + substring
}

// result -> "Lorem ipsum dolor elit, sed aliqfuas. Imfs enim ad veniam, quis nostrud consequat? Duis aute irure dolor in pariatur."
person rintaro    schedule 27.11.2014
comment
Он делает первую букву в строке заглавной, но остальные буквы в начале предложения по-прежнему строчные. - person Tom Coomer; 27.11.2014
comment
(+1), но: Почему var _? – Последние две строки можно немного упростить до result += String(first).uppercaseString + substring . - person Martin R; 27.11.2014
comment
На самом деле тут есть одна тонкая проблема. Ваш метод, примененный к "toefl. abc.", дает "Toefl. aBc.". Причина в том, что лигатура  при преобразовании в верхний регистр становится двумя символами: FL :) - person Martin R; 26.03.2015

person    schedule
comment
Вы видели, что вопрос касается языка программирования Swift? - person Martin R; 27.11.2014