首页 > 解决方案 > 解析字符串上的比较和版本号

问题描述

我有版本字符串,例如>=1.0.0.1字符串也可以是<2.0, 或<0.1-alpha. 如何始终将字符串解析为分隔值,例如">="-"1.0.0.1""<"- "0.1-alpha"`?

这是我到目前为止所拥有的并且它有效,但我发现它非常丑陋/凌乱。任何清理它的提示将不胜感激。

我正在使用 Laravel(欢迎使用字符串助手)。这也必须适用于其他版本的字符串示例。它总是紧随comparison其后version

>=1.0.0 <3.0 >0.01-alpha... ETC

public function test_version_compare()
{
    $version = ">=4.0.0";

    $resolved_comparison = null;
    $resolved_version = null;

    $version_array = str_split($version);

    foreach ($version_array as $key => $array) {
        if (is_numeric($array)) {
            $version_pos = $key;

            break;
        }
    }

    foreach ($version_array as $key => $array) {
        if ($version_pos > $key) {
            $resolved_comparison = $resolved_comparison.$array;
        } else {
            $resolved_version = $resolved_version.$array;
        }
    }

    $this->assertEquals('>=', $resolved_comparison);
    $this->assertEquals('4.0.0', $resolved_version);

}

标签: phplaravelparsing

解决方案


推荐阅读