【问题标题】:Capitalise first letter of every sentence每个句子的首字母大写
【发布时间】:2015-01-25 23:41:11
【问题描述】:

如何将字符串中每个句子的首字母大写?我应该使用.capitalisedString吗?

【问题讨论】:

  • 在这里查看我的答案:stackoverflow.com/questions/2432452/…
  • @MaxMacLeod:不是 100% 重复的。引用的线程显示如何将字符串的第一个字符大写,而不是字符串中的每个 sentence
  • @MaxMacLeod 没有。注意这是关于多句字符串的。不只是一个字符串。
  • 好的,我现在明白了

标签: string swift nsstring capitalization


【解决方案1】:

您可以使用NSStringEnumerationOptions.BySentences 枚举每个句子的String。但它仅在第一个字符为大写时才检测“句子”。

所以,这可能并不完美,但你可以试试这个:

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."

【讨论】:

  • 它将字符串中的第一个字母大写,但句首的其他字母仍然小写。
  • (+1),但是:为什么是var _? – 最后两行可以稍微简化为result += String(first).uppercaseString + substring
  • 这里其实有一个微妙的问题。应用于"toefl. abc." 的方法产生"Toefl. aBc."。原因是连字 "f",当转换为大写时,变成了两个字符:"FL" :)
【解决方案2】:
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);
}

【讨论】:

  • 你看到问题是关于 Swift 编程语言的吗?
猜你喜欢
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 2022-11-16
  • 2014-07-11
  • 1970-01-01
  • 2012-05-20
相关资源
最近更新 更多