【问题标题】:Get an array of int from a String of numbers从数字字符串中获取一个 int 数组
【发布时间】:2013-04-10 14:00:27
【问题描述】:

我有一长串数字,

String strNumbers = "123456789";

我需要从这里获得int[]

我用这个方法得到它:

public static int[] getIntArray(strNumbers)
{
    String[] strValues = strNumbers.split("");
    int[] iArr = new int[strValues.length];
    for(int i = 0; i < strValues.length; i++)
    {
        iArr[i] = Integer.parseInt(strValues[i]);
    }
    return iArr;
}

我收到此错误:java.lang.NumberFormatException: For input string: ""

我的猜测是我不能那样拆分字符串。我尝试了各种转义或正则表达式,但没有任何效果。

谁能帮忙?

【问题讨论】:

  • 感谢编辑。总有一天我会做对的。 ;)

标签: java arrays string split int


【解决方案1】:

试试

char[] chars = strNumbers.toCharArray();

然后遍历char数组。

【讨论】:

  • 这是个好主意,我觉得有点傻,因为我没有想到。
【解决方案2】:

您的问题是拆分正则表达式。试试这个:

String[] strValues = strNumbers.split("(?<=\\d)");

这会在每个数字后拆分(使用 look behind 正则表达式),这将为空白输入创建一个大小为零的数组。

【讨论】:

  • 这正是我想要的。非常感谢你。我对正则表达式有点陌生,但我已经到了。
  • 不客气 :) 我可以推荐 this site 作为一个好的正则表达式参考站点。
【解决方案3】:

您可以使用 charAt() 函数检索字符串中的每个字符,然后执行 parseInt()

【讨论】:

    【解决方案4】:

    您可以简单地使用 for 循环遍历您的字符串并调用 String.charAt(int)

    【讨论】:

      【解决方案5】:

      试试:

      char[] chars = strNumbers.toCharArray();
      int[] iArr = new int[chars.length];
      for(int i = 0 ; i < chars.length ; ++i) {
          iArr[i] = chars[i] - '0';
      }
      

      【讨论】:

        【解决方案6】:

        您可以使用循环语句来迭代字符串。然后您使用子字符串方法将字符串切成单独的数字。使用 substring() 方法可以定义要转换为数字的子字符串的长度。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-12-09
          • 1970-01-01
          • 2016-06-11
          • 2011-03-05
          • 2011-07-27
          • 2015-02-08
          相关资源
          最近更新 更多