我如何将Java中单词的第一个字母大写?

时间:2012-11-18 01:15:47

标签: java string java-7

如何将句点(。)之后的下一个词大写? 例如。

  太阳升起了。植物开始生长。

我需要做些什么来大写植物中的 p

5 个答案:

答案 0 :(得分:8)

根据你提出这个问题的方式,我假设你是编程的初学者,特别是Java编程。

所以第一个答案是Java中没有神奇的解决方案;即没有“找到并把每句话的第一个词都弄清楚”。您(或某人)需要通过设计和编写一些代码来解决它。

解决问题的方法是将其分解为部分。例如,这里有一个可能的细分......

  1. 给定一个输入String,将其拆分为句子字符串。

  2. 给定一个句子String,提取第一个单词。

  3. 说出一句话,将其大写。

  4. 用新词替换句子的第一个单词。

  5. 将一系列句子转回字符串。

  6. 然后编写上面的代码,并一起测试它们。现有的Java库API可以为您提供帮助。例如:

    (阅读每种方法的javadocs ......)

    一旦代码正常工作,您可以对其进行优化以使代码更好(可读,可维护等)和/或使其运行更快。

    如果您对上述方法有疑问,请随时提出后续问题。但是你需要向我们展示你的代码......或伪代码。

答案 1 :(得分:2)

您应该使用BreakIteratorsentence instance,而不是尝试自己查找单词和句子边界。

BreakIterator也会处理检测指定语言环境的句子边界的所有困难,例如数字中的小数点不是句子边界。

以下是一些将转换句子的示例代码:

String sentence = "The sun rose.  plants started to grow.";
StringBuilder buf = new StringBuilder(sentence);

BreakIterator bi = BreakIterator.getSentenceInstance(Locale.ENGLISH);
bi.setText(sentence);
int pos;
do
{
    pos = bi.next();
    if (pos != BreakIterator.DONE && pos < buf.length())
        buf.setCharAt(pos, Character.toUpperCase(buf.charAt(pos)));
}
while (pos != BreakIterator.DONE);

String correctedSentence = buf.toString();
System.out.println(correctedSentence);

答案 2 :(得分:1)

这是使用正则表达式的解决方案:

public String capitalizeSentences(String s) {
    Pattern p = Pattern.compile("\\.\\s+\\w");
    Matcher m = p.matcher(s);
    StringBuffer buf = new StringBuffer();
    while (m.find()) m.appendReplacement(buf, m.group().toUpperCase());
    m.appendTail(buf);
    return buf.toString();
}

模式/\.\s+\w/匹配点,一个或多个空格和单词字符的序列。正则表达式对于字符串处理非常强大,几乎所有编程语言都支持它。一次学习它们的语法,你将在所有语言中提高效率!

编辑: 使用Java的BreakIterator类将@文件分解为句子,查看@ prunge的解决方案以获得更优雅的解决方案。

答案 3 :(得分:0)

试试这个。

String phrase = "The sun rose. plants started to grow";

// Split every sentence
String[] sentences = phrase.split(".");

String capitalized = "";

StringBuilder sb = new StringBuilder();

// Process every sentence
for (String str : sentences){
    // Trim the sentence. It might have a space in the beginning
    String result = str.trim();
    // get the first char
    String fc = "" + result.charAt(0);
    // Replace with capitalized one
    result = result.replace(fc, fc.toUpperCase());
    sb.append(result);
    sb.append(". "); // A full-stop and space
}

capitalized = sb.toString();

答案 4 :(得分:-1)

你可以解析整个句子,你的分隔符将是句号。然后从上面的例子中你基本上有2个字符串; “太阳升起”,“植物开始生长”,然后你可以获得每个人的第二个角色,(在完全停止后占据空间成为第一个角色)并将其大写。

public class mainClass {

public static void main(String[] args) {

    String phrase = " The sun rose. plants started to grow.";
    String delims = "\\."; //full stop as delimiter
    String[] tokens = phrase.split(delims);

    String capitalizedLetter;
    String word;
    String capitalizedWord;

    for(String sentence: tokens)
    {
    capitalizedLetter = sentence.substring(0, 2).toUpperCase();
    word = sentence.substring(2);
    capitalizedWord = capitalizedLetter + word;
    System.out.println(capitalizedWord + "."); //to include the missing full-stop
    } 

}

}

希望这有帮助!祝你好运!

相关问题