我正在使用Java与硒一起进行自动化。
我在需要捕获电子邮件收件箱值的测试脚本之一中使用子字符串。现在,该值可以是1位,2位或3位。
浏览器上的文本看起来像这样-27收件箱
因此,仅捕获数字,我使用substring(0,2),它正确捕获了值27。问题是当值变为3位时,例如-110收件箱。它只会捕获11而不会捕获0。如果值是-5 Inbox,那么它将给出错误。
那么如何使子字符串与所有数字一起工作
例:
5个收件箱
45个收件箱
126个收件箱
它应该捕获数字,而不考虑数字的位数。
最佳答案
您对输入的问题不太清楚。
从格式为<digits> Inbox
的字符串中获取前导数字的最简单方法是从其末尾删除6个字符:
String digits = s.substring(0, s.length() - 6);
或者,如果您宁愿对6的含义不那么神秘:
String digits = s.substring(0, s.length() - " Inbox".length())
另外,您可以使用正则表达式获取匹配的组:
String digits = Pattern.compile("(\\d+)").find(s).group();
另外,您可以在字符串中查找连续的数字:
int start = 0;
while (start < s.length() && !Character.isDigit(s.charAt(start))) {
++start;
}
int end = start;
while (end < s.length() && Character.isDigit(s.charAt(end))) {
++end;
}
String digits = s.substring(start, end);