あなたはこれを行うことができ、異なるバージョンのためのさまざまな動作を提供する必要がある場合だけ、別のアプローチを放り出すする:
string pattern = @"Android (?<major>\d+)\.(?<minor>\d+)(\.(?<revision>\d+))?";
Match match = Regex.Match(text, pattern);
if (match.Success)
{
int major = int.Parse(match.Groups["major"].Value);
int minor = int.Parse(match.Groups["minor"].Value);
int revision;
if (!int.TryParse(match.Groups["revision"].Value, out revision))
revision = 0;
if (major == 2 && minor == 2)
{
if (revision == 0)
{
// Process version 2.2
}
else
{
// Process version 2.2.x, where x > 0
}
}
}
、必要に応じて改訂が続くマイナーバージョンに続いてメジャーバージョンと一致します、それら3つの番号のそれぞれにアクセスできます。リビジョンが指定されていない場合は、リビジョンが0(つまり"Android 2.2" == "Android 2.2.0"
)であるかのように扱われます。
また、このように、作業の一部を行うためにVersion
classを使用することができますがあり
string pattern = @"Android (?<version>\d+\.\d+(\.\d+)?)";
Match match = Regex.Match(text, pattern);
if (match.Success)
{
Version version = Version.Parse(match.Groups["version"].Value);
if (version.Major == 2 && version.Minor == 2)
{
if (version.Build < 1)
{
// Process version 2.2
}
else
{
// Process version 2.2.x, where x > 0
}
}
}
第三の数の構成要素が、ない「リビジョン」を「構築する」と呼ばれています。 Build
propertyは、値が0の場合は0を返し、値が指定されていない場合は-1を返します。
FWIW:ちょうど1桁が必要な場合は '\ d {1}'を実行する必要はなく、 '\ d'が実行します。 –