我正在使用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);

08-25 12:03
查看更多