替换字符切换的java替代方案
我被要求为班级编写一个程序,其中:
- 接受了一份工作。txt文件
- 将文件中的数字0-9转换为等效文本(如果数字位于句首,则使用大写)
- 将完成的句子打印到新文件中
示例:
The 8 eggs were separated into 3 groups.
将转换为:
The eight eggs were separated into three groups.
目前,我正在使用带有StringBuilder
的(非常)长的switch语句来完成任务:
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;
.....
}
有更高级/更有效的方法来完成此任务吗
# 1 楼答案
我会这样做。使用
Character.isDigit
遍历字符,检查是否应该替换它们。如果是这样,只需使用(character-'0'
)作为索引在数组中查找替换字符串:输出为:
# 2 楼答案
也许你在找
HashMap
。这有助于:HashMap<String, String> DIGITS
并使用put("0", "zero"); put("1", "one"); //etc..
对其进行初始化李>string.split(" ")
拆分输入字符串;这将创建如下字符串数组:{"The","8","eggs",...}
李>使用
StringBuilder
构建答案:# 3 楼答案
你可以这样做
你的整个计划都完成了
解释: