有没有办法将整数的英语string
表示形式(例如"一百八十")转换为整数?按预期Integer.parseInt("thirty five")
投了一个NumberFormatException
。 Java中是否有内置函数来执行此操作?
答案 0 :(得分:4)
否强>
不,没有内置功能来实现这一目标。
<强> 1。方法:HashMap
您可以使用HashMap存储String,Integer对(例如:&#34; 20&#34;和20)。
HashMap<String, Integer> numbers = new HashMap<String, Integer>();
numbers.put("one", 1);
numbers.put("two", 2);
...
numbers.put("nine", 9);
numbers.put("ten", 10);
numbers.put("eleven", 11);
...
numbers.put("twenty", 20);
numbers.put("thirty", 30);
...
然后您可以通过numbers.get(..)简单地解析它,并将该数字添加到您的结果数字中。
public int getNumber(String str)
{
int number = 0;
String[] parts = str.split(" ");
for (String number : parts)
{
if (numbers.contains(number)
{
number += parts.get(number);
}
}
return number;
}
<强> 2。方法:ArrayList
您可以创建类似
的ArrayListArrayList<String> numbers = new ArrayList<String>;
numbers.add("zero");
numbers.add("one");
...
numbers.add("eight");
numbers.add("nine");
numbers.add("ten");
...
然后你可以构建自己的函数,通过在这个ArrayList中查找它们来解析这些数字的字符串(它们的索引是结果数字)。
public int getNumber(String str)
{
int number = 0;
String[] parts = str.split(" ");
for (String number : parts)
{
if (numbers.contains(number)
{
number += parts.indexof(number);
}
}
return number;
}
另见
答案 1 :(得分:0)
尝试通过它的空格分割字符串,然后将每个字替换为相应的数字。
您可以使用Map<String, Integer>
包含单词和数字。