我有一个从字符串中提取特定子字符串的方法。此子字符串由字符串中的数字组成。然后将其解析为整数。
方法:
protected int startIndex() throws Exception {
String str = getWorkBook().getDefinedName("XYZ");
String sStr = str.substring(10,13);
return Integer.parseInt(sStr) - 1;
}
例子:
字符串:
“0分贝”$460澳元
子字符串:
460
我手动输入了子字符串的索引范围。但我想把它自动化。
我的方法:
String str = getWorkBook().getDefinedName("XYZ");
int length = str.length();
String sStr = str.substring(length - 3, length);
这对于本例非常有效。
现在有一个问题,字符串末尾的数字也可以是4或5位数字。如果是这样的话,我自然会得到一个 NullPointerException
.
有没有一种方法或其他方法来找出字符串末尾有多少个数字?
5条答案
按热度按时间w51jfk4q1#
在您的情况下,我建议将regex与replaceall一起使用,如下所示:
这将提取结尾或字符串或任何长度的所有数字。
另外,我认为您缺少字符串中没有数字的情况,因此我建议您在将字符串转换为整数之前检查字符串。
eaf3rand2#
你可以用正则表达式,
(?<=\D)\d+$
表示一个或多个数字(即。\d+
)从字符串末尾开始,前面是非数字(即。\D
).yc0p9oo03#
如果我要这么做的话,我只会从头开始搜索。这是相当有效的。如果找不到正数,则返回-1。其他返回选项和使用
OptionalInt
也可以使用。印刷品
如果你知道最后总会有一个数字,你可以忘记上面的三元(?:),只需执行以下操作:
kuuvgm7e4#
如果只想获取最后一个数字,可以在revert时遍历整个字符串并获取开始索引:
然后打印:
您必须添加
6l7fqoea5#
无正则表达式的简单快速解决方案:
输出为: