Сравнение парсинга и номеров версий в строках - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть строки версии, например, >=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 ... et c

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);

}
...