2014-11-27 3 views
3

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

+1

Смотрите мой ответ здесь: https://stackoverflow.com/questions/2432452/how-to-capitalize-the-first -word-of-the-sentence-in-objective-c/24712107 # 24712107 –

+2

@MaxMacLeod: не 100% дубликат. Связанный поток показывает, как загладить первый символ строки, а не каждого * предложения * в строке. –

+1

@MaxMacLeod No. Обратите внимание, что речь идет о цепочке с несколькими предложениями. Не только одна строка. – Kirsteins

ответ

4

Вы можете перечислить 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." 
+0

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

+0

См. Мой обновленный ответ – rintaro

+0

(+1), но: Почему 'var _'? - Две последние строки могут быть упрощены до результата 'result + = String (first) .uppercaseString + substring'. –

-1
public static void main(String[] args) { 
    String a = "this is.a good boy"; 
    String[] dot = a.split("\\."); 
    int i = 0; 
    String output = ""; 
    while (i < dot.length) { 
     dot[i] = String.valueOf(dot[i].charAt(0)).toUpperCase() 
       + dot[i].substring(1); 
     output = output + dot[i] + "."; 
     i++; 
    } 
    System.out.println(output); 
} 
+0

предложение может быть закончено '!', '?' И '.' слишком ... – holex

+0

Видите ли, что вопрос о языке программирования Swift? –