检查一个字符串是否是数字

7

我知道你可以通过执行Integer.parseInt("1234");来检查一个字符串是否为整数。
但是我想要的是将文本数字链接到整数上。
例如:

  • "One" == 1
  • "Two" == 2
  • "Three" == 3
  • "Twenty" == 20

有没有一些库可以用来实现这个功能,还是我必须手动编程?

我之所以想做这个,是因为我有一个带有语音识别功能的Android应用程序。
用户可以进行计数。 这个数字会显示在屏幕上。

编辑
经过一些尝试,我发现我使用的SpeechRecognizer类会自动将数字解析为实际数字...


你可以使用枚举模式来完成这个任务。 - BlackVegetable
3
请记住,这将会导致严重的国际化问题。 - nothrow
类似问题:https://dev59.com/Lm855IYBdhLWcg3w-JMr - BYTE RIDER
@BYTERIDER,感谢您的提醒,但是那个问题的答案并不足够。我想更专注于1-100的数字,而不是“一百七十一”的问题。 - Rick Hoving
2个回答

5

我不确定是否有针对该问题的库,但这里有一个很好的例子。


2
据我所知,目前没有这方面的库,但你可以这样思考:
创建三种类型的令牌
a. one, two, three.................... nine b. eleven to nineteen, twenty, thirty , ............ ninety
c. hundred, thousand, ........ and bigger values
现在解析您的输入字符串并与您的令牌匹配。 仅作为基本想法,您可以这样考虑:
步骤1. 从字符串分词器中创建令牌
步骤2. 将最右边的字符串与令牌匹配
步骤3. 从右依次匹配每个字符串,并与令牌匹配并计算
例如:ONE THOUSAND FIVE HUNDRED FIFTY THREE
让sum = 0
第一个字符串= Three,因此sum += 3
第二个字符串= FiFTY,因此sum += 50;
第三个字符串= Hundred,因此您需要将第四个字符串乘以100并添加到sum中,因此sum += f * 100...以此类推
这只是一个基本思路。 因此,在适当的规划后,您可以完美地实现它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接