我在PHP中使用public boolean isVisible(int elementID) {
try {
onView(withId(elementID)).check(matches(isDisplayed()));
return true;
} catch (Throwable t) {
return false;
}
}
,因为我需要分隔一个字符串。这种类型:
if(isVisible(R.id.dialogID)) {
onView(withText("OK")).perform(click()); // dismiss the dialog by clicking 'OK' button
// do whatever you want to do after this
}
我需要将数字分开,因为我对它们进行了数学运算。我的代码在整数时运行良好。如果我有一个这种类型的字符串explode
,它不会考虑小数部分$Data = '10 x 4';
。我怎么能让我考虑到这一部分呢?
10 x 2.5
答案 0 :(得分:2)
您可以采取以下两种方法。如果您可以将逗号分隔符更改为句点/句号:
$data = '10 x 2.5';
$floats = array_map('floatval', explode(' x ', $data));
echo $floats[0] * $floats[1];
或者您可以使用正则表达式,它也会确认您拥有正确的数据格式。
echo preg_replace_callback('/(\d+(?:[.,]\d+)?)\h*x\h*(\d+(?:[.,]\d+)?)/', function($match) {
return str_replace(',' , '.', $match[1]) * str_replace(',' , '.', $match[2]);
}, $data);
PHP演示:https://3v4l.org/I82Gt
正则表达式演示:https://regex101.com/r/tTcJSp/1/
答案 1 :(得分:1)
试试这个。只需将“,”替换为“。”它正在发挥作用。
$data = '10 x 2,5';
$data = str_replace(',','.','10 x 2,5');
$array = explode("x", $data);
echo $total = $array[0]*$array[1];
答案 2 :(得分:0)
试试这个:
<?php
$data = '10 x 2,5';
$array = explode("x", $data);
$total = floatval(str_replace(',', '.', $array[0]))*floatval(str_replace(',', '.', $array[1]));
?>
此处str_replace()
用于检查是否有,
在字符串中然后转换为其浮点值。
希望这会有所帮助。
答案 3 :(得分:0)
$data = '10 x 2,5';
$array = explode("x", $data);
$decimal =$array[1];
//replace the comma with dot
$decimal_formated = str_replace(',', '.', $decimal);
//format the string to float
$decimal_formated = (float)$decimal_formated;
//OR $decimal_formated = floatval($decimal_formated);
//get total
$total = $array[0]*$decimal_formated;
//french format $total, with comma
$total_with_comma =number_format($total, 1, ',', ' ');
echo $decimal.'</br>'; //output 2,5
echo $decimal_formated.'</br>'; //output 2.5
echo $total.'</br>'; //output 25
echo $total_with_comma.'</br>'; // output 25,0
您可以使用number_format(),floatval()。