Как сделать заглавной первую букву каждого предложения в строке? Должен ли я использовать .capitalisedString
?
Сделать заглавной первую букву каждого предложения
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
Он делает первую букву в строке заглавной, но остальные буквы в начале предложения по-прежнему строчные.
- person Tom Coomer; 27.11.2014
(+1), но: Почему
var _
? – Последние две строки можно немного упростить до result += String(first).uppercaseString + substring
.
- person Martin R; 27.11.2014
На самом деле тут есть одна тонкая проблема. Ваш метод, примененный к
"toefl. abc."
, дает "Toefl. aBc."
. Причина в том, что лигатура при преобразовании в верхний регистр становится двумя символами: FL :)
- person Martin R; 26.03.2015
person
schedule
Вы видели, что вопрос касается языка программирования Swift?
- person Martin R; 27.11.2014