如何将字符串“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);
}
还有另一种方法吗?
答案 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("(?<=.)");
此正则表达式是后面的,资产在匹配前有一个字符。看后面是非消费的,所以你不会失去任何输入分裂。