将实数字符串整数(例如“三十五”)转换为整数

时间:2014-07-31 19:17:47

标签: java

有没有办法将整数的英语string表示形式(例如"一百八十")转换为整数?按预期Integer.parseInt("thirty five")投了一个NumberFormatException。 Java中是否有内置函数来执行此操作?

2 个答案:

答案 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

您可以创建类似

的ArrayList
ArrayList<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>包含单词和数字。