将数字串拆分为单个数字

时间:2014-06-22 18:19:44

标签: java android regex string

如何将字符串“542”中的数字拆分成单个数字?在我的桌面上,我可以使用String.split("")分割数字,它可以正常工作。但是当在Android上运行时,我得到NumberFormatException: Invalid int: ""。 这是我的代码:

public void render(int n, SpriteBatch batch) {
    String[] numbers = String.valueOf(n).split("");
    for(int i = 0; i < numbers.length; i++) 
        batch.draw(Assets.numbers[0][Integer.valueOf(numbers[i])], pos.x + (50 * i), pos.y);
}

还有另一种方法吗?

3 个答案:

答案 0 :(得分:3)

您可以使用String.charAt,这将为您提供角色。删除&#39; 0&#39;会给你一个从0到9的值。

public void render(int n, SpriteBatch batch) {
    String string = Integer.toString(n);
    for(int i = 0; i < string.length(); ++i) 
        batch.draw(Assets.numbers[0][string.charAt(i) - '0'],
                   pos.x + (50 * i), pos.y);
}

答案 1 :(得分:2)

使用String.split("")将始终将第一个索引留空(即字符串:&#34;&#34;)。这就是您在尝试运行NumberFormatException: Invalid int: ""时获得Integer.valueOf(numbers[0])的原因。

建议使用string.charAt(index)来迭代String.valueOf(n)中的字符。

答案 2 :(得分:1)

""上拆分会导致结果数组的第一个元素为空白,因为空白正则表达式在任何地方都匹配,包括输入的开始。

您需要在每个字符之后拆分

String[] digits = str.split("(?<=.)");

此正则表达式是后面的,资产在匹配前有一个字符。看后面是非消费的,所以你不会失去任何输入分裂。