C#: фильтровать такие вещи, как `-beta1` и` hotfix` из номера версии строки - PullRequest
0 голосов
/ 14 февраля 2020

Я обрабатываю некоторые строки старых версий, которые обычно имеют форму 1.2.3, но иногда они имеют теги, помеченные в конце, как -beta1 или hotfix (пробел в начале этого).

Я хочу отфильтровать только по номеру версии, например. 1.2.3, с оставшимися только цифрами (0-9) и точками (.), чтобы я мог передать его в Version.TryParse() с высокой вероятностью его анализа.

Я посмотрел в нескольких примерах в Интернете, но все они, кажется, фокусируются на числах, подобных 12.34, и не работают, когда есть дополнительные части с номерами периодов, такие как 12.34.56.

Производительность не критична, ремонтопригодность есть. Какой подход был бы наиболее подходящим?

1 Ответ

1 голос
/ 14 февраля 2020

Вы можете попробовать соответствие с помощью регулярных выражений :

using System.Text.RegularExpressions;

... 

string source = "some text with 1.2.34.4893-beta1 version" ;

if (Version.TryParse(Regex.Match(source, @"[0-9]+(?:\.[0-9]+)+").Value, out var version)) {
  // version  extracted
}
else {
  // source doesn't have a match
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...