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

Java 将实字符串整数(例如“三十五”)转换为整数,java,Java,有没有办法将英文字符串表示的整数(例如“一百八十”)转换为整数?正如预期的那样,Integer.parseInt(“三十五”)抛出了一个NumberFormatException。Java中是否有内置函数来执行此操作?尝试将字符串按空格分隔,然后将每个单词替换为对应的数字 public int getNumber(String str) { int number = 0; String[] parts = str.split(" "); for (String number

有没有办法将英文
字符串
表示的整数(例如“一百八十”)转换为整数?正如预期的那样,
Integer.parseInt(“三十五”)
抛出了一个
NumberFormatException
。Java中是否有内置函数来执行此操作?

尝试将字符串按空格分隔,然后将每个单词替换为对应的数字

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;
}
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。方法:HashMap

您可以使用HashMap来存储字符串、整数对(例如:“二十”和20)

2。方法:ArrayList

您可以创建一个ArrayList,如

ArrayList<String> numbers = new ArrayList<String>;

numbers.add("zero");
numbers.add("one");

...

numbers.add("eight");
numbers.add("nine");    
numbers.add("ten");

...
另请参见


否,没有此功能的内置信息。相反,您可以创建自己的映射并手动解析字符串,或者在网上搜索此类实现。这里有一些关于反向算法的有趣讨论:也许这可以帮助您开始。我会投票以重复方式关闭,但另一个也是closed@1337我认为您的ArrayList实现有问题,但我不能对你的回答发表评论。对于输入“一百八十”,它将返回“10080”,不是吗?你完全正确,ArrayList实现有缺陷是的,这就是为什么我也包括HashMap实现:)@1337然后删除它,只留下另一个:)我不想编辑该部分,因为这是另一个有趣的方法,我喜欢使用索引的想法,因为它也可以用于其他一些事情:)
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;
}