Java,Android - 如何将字符串转换为数字?

时间:2017-04-12 05:59:37

标签: java android string

我正在开发一个用户将使用Voice进行交互的应用程序。每当用户说第一,第二,第三等时......我需要将字符串“first”转换为int 1,将字符串“second”转换为int 2.

到目前为止,我发现的是(Java-Android How to convert letters in a string to specified number),将字符串中的每个字母转换为相应的数字,然后返回一些数字。但我不是我需要的。我真的被卡住了。任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:3)

没有确切的方法可以这样做。但是为了完成功能,你可以使用Switch case 例如: -

switch(WordNumber) {
   case First:
       System.out.println(1);
       return 1;
      break; // optional

   case Two:
       System.out.println(2);
       return 2;
      break; // optional

   // You can have any number of case statements.
   default : // Optional
      // Statements
}

答案 1 :(得分:1)

如果您定义一个包含所有字符串基数的列表,那么您可以使用 indexOf 并获取您要查找的值,但请仔细考虑null元素: 要么将空基数元素添加到列表中,要么将1添加到索引值

List<String> cardinal = Arrays.asList("first", "second", "third", .. etc);
System.out.println(cardinal.indexOf("first") + 1);

答案 2 :(得分:1)

您需要拆分值receive,以分析每个步骤。由于您的价值不高,您需要为每个数字创建一个地图......这太过分了。

所以只需创建类似的东西:

{ "one", "two", "three", ... "nine" }
{ "ten, "twenty", "thirteen", ... "nineteen"}
.. hundreds
.. thousands
.. specific case for eleven, twelves, ...

然后你需要通过拆分它来分析像"twenty two"这样的值并搜索每个对应的值。

twenty = index 1 of tens array => (1 + 1) * 10 = 20
two = 2 => index 1 in unit array => 1 + 1 = 2

20 + 2

22

当然,这需要多考虑一下,但这会给你一个很好的系统来阅读每一个可能的数字。

答案 3 :(得分:0)

我猜你至少有某种方法来获取字符串值?

如果数字相对较小(~10),则哈希映射可以执行此操作。只需手动保存它们并通过String查找它们。

HashMap<String, Integer>

如果你有一个更大的列表(~100),你将有一个方法将传入的int分成子数。因此,在这种情况下,您将查看十个值并将其与post值组合。

2 = Second

22 - Twenty-second 

52 - Fifty-second