gpt4 book ai didi

java - 将 HashMap 字符串中的特定字符大写

转载 作者:行者123 更新时间:2023-12-01 11:51:21 26 4
gpt4 key购买 nike

我有一个程序,可以将 String 中的数字 0-9 转换为其等效文本(例如:“0”变为“零”)。但是,当数字位于句子开头时,我需要将其大写。

示例

4 dogs were chasing 3 cats.
The 8 eggs were separated into 3 groups.

变成:

four dogs were chasing three cats.
The eight eggs were separated into three groups.

代码

public String ConvertSentance(String s){
sb = new StringBuilder();

h.put("0","zero");
h.put("1","one");
h.put("2", "two");
h.put("3", "three");
h.put("4", "four");
h.put("5", "five");
h.put("6", "six");
h.put("7", "seven");
h.put("8", "eight");
h.put("9", "nine");

String[] split = s.split(" ");

for (String newS : split) {
if (h.containsKey(newS)) {
sb.append(h.get(newS));
sb.append(' ');
}
else {
sb.append(newS);
sb.append(' ');
}
}

convertedSent = sb.toString();
return sb.toString();

}

如何才能将起始字符大写,以便输出变成这样?

Four dogs were chasing three cats.

仅当它们的编号位于句子开头时,我才无法使其正常工作。我尝试了 for-loops 的不同变体,但没有成功。

最佳答案

我想你应该使用一个简单的解析器。我是什么意思?您应该定义新句子何时开始(出现 '.''?''!' 后,下一个单词将从大写字母开始)。您可以使用简单的 boolean 字段 sentenceEnded,当 newS 以这些符号之一结尾时,该字段为 true,在下一个单词后变为 false。当您这样做时,您可以使用此代码示例来执行您想要的操作:

if (sentenceEnded) {
String token = h.get(newS);
sb.append((char) ('A' + token.charAt(0) - 'a')); //dirty hack; dont use it in real projects
sb.append(token.substring(1, token.length()));
}

关于java - 将 HashMap 字符串中的特定字符大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28800994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com