数字漂浮的正则黄瓜黄瓜小黄瓜

时间:2018-05-28 02:31:56

标签: java maven selenium cucumber cucumber-jvm

我的功能文件为#

And Pick random value between '100.3' and '200.9'

当我执行Feature am as as

要使用随机函数,我需要将值加倍,不确定值(float / double)如何划分为int

@And("^Pick random value between '(\\d+)\\.(\\d+)' and '(\\d+)\\.(\\d+)'$")
public void pickrandomvaluebetween(int arg1, int arg2, int arg3, int arg4) throws Throwable {

有人可以帮忙吗?不确定是否缺少任何依赖

3 个答案:

答案 0 :(得分:1)

我认为你想要的是将范围的低点和高点作为单独的数字捕捉。尝试使用这种模式:

@And("^Pick random value between '(\d+(?:\.\d+)?)' and '(\d+(?:\.\d+)?)'$")
public void pickrandomvaluebetween(String min, String max) throws Throwable {
    // ... parse min/max as floats or doubles
    // do something
}

Demo

模式(\d+(?:\.\d+)?)表示匹配一个或多个数字,后跟可选的小数位和一个或多个数字。您在内括号内看到的?:应该告诉Java 将小数点部分捕获为单独的模式。相反,如上面的演示所示,仅捕获整个(可能是浮点)数字。

答案 1 :(得分:1)

@And("^Pick random value between '([\d\.]+)' and '([\d\.]+)'$") 
public void pickrandomvaluebetween(String minValueStr, String maxValueStr) {
   float minValue = Float.parseFloat(minValueStr);
   float maxValue = Float.parseFloat(maxValueStr);
}

答案 2 :(得分:0)

从Cucumber-jvm v3.x开始,您可以使用Cucumber表达式,因此您不必再使用Regex了。资料来源:https://cucumber.io/blog/2018/05/19/announcing-cucumber-jvm-3-0-0