0

我有一个字符串,它以 B、KB、MB 等形式返回数据使用情况。我想将它的数字和字符串部分分开。

例如:14.5 MB - 我分别想要 14.5 和 MB。

我尝试使用正则表达式

'/(\d+)(\w)/'

但没有给出预期的结果。

预期结果

Array( [0] => 14.5, [1] => 'MB' )
4

2 回答 2

2

您可以尝试preg_match_all在此处使用以下正则表达式模式:

\b(\d+(?:\.\d+)?)\s*([KMGT]?B)\b

这匹配(可能)十进制大小,后跟基于字节的单位。

$input = "Here are three sizes 14.5 MB, 10B, and 30.8 GB";
preg_match_all("/\b(\d+(?:\.\d+)?)\s*([KMGT]?B)\b/", $input, $matches);
print_r($matches[1]);
print_r($matches[2]);

这打印:

Array
(
    [0] => 14.5
    [1] => 10
    [2] => 30.8
)
Array
(
    [0] => MB
    [1] => B
    [2] => GB
)
于 2019-12-19T05:57:52.183 回答
2

如果您确定字符串之间始终包含空格,则可以使用 explode 函数

$consumedData = '14.5 MB';
$withSeperate = explode(' ',$consumedData);
var_dump($withSeperate);

输出

Array([0] => 14.5, [1] => 'MB'); 
于 2019-12-19T05:58:16.427 回答