我被要求为类(class)编写一个程序:
- 已接受 .txt 文件
- 将文件中的数字 0-9 转换为对应的文本(如果数字位于句子开头,则使用大写)
- 将完成的句子打印到新文件
示例:
The 8 eggs were separated into 3 groups.
将转换为:
The eight eggs were separated into three groups.
<小时/>
目前,我正在使用一个(非常)长的 switch 语句和 StringBuilder
来完成任务:
switch(sb.charAt(i)){
case '0':
if (i == 0)
sb.replace(i, i+1, "Zero");
else
sb.replace(i, i+1, "zero");
break;
case '1':
if (i == 0)
sb.replace(i, i+1, "One");
else
sb.replace(i, i+1, "one");
break;
.....
}
有更先进/更有效的方法来完成这项任务吗?
最佳答案
您可能正在寻找HashMap
。这可以帮助:
- 创建静态
HashMap<String, String> DIGITS
并使用put("0", "zero"); put("1", "one"); //etc..
来初始化它。 - 使用
string.split(" ")
分割输入字符串;这将创建一个如下所示的字符串数组:{"The","8","eggs",...}
. 使用
StringBuilder
建立答案:for (String s : splitted) { if (DIGITS.contains(s)) sb.append(DIGITS.get(s)); else sb.append(s); sb.append(' '); }
关于java - switch 的替代方案——替换字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28799408/