4

私は2つの文字列を持っています

 string A = "1.0.0.0";
 string B = "1.0.0.1";

これらの2つの文字列を整数または小数などに変換することで、BがAよりも大きい(バージョンごとに)ことをどうにかして評価する必要があります。

私は以下を試しました

Decimal S = Convert.ToDecimal(A);
int S = Convert.ToInt32(A);

ただし、「入力文字列が正しい形式ではありませんでした」というエラーが引き続き発生します。

どんな助けでもありがたいです。

4

6 に答える 6

20

バージョンクラスを参照してください。

あなたはこのようなことをすることができます:

Version a = new Version("1.0.0.0");
Version b = new Version("1.0.0.1");

if (b>a) //evaluates to true
    blah blah blah

この正確なシナリオを個人的にテストしたことはありませんが、このVersionクラスでは、ここに示したような比較演算子を使用できます。

于 2013-03-21T20:32:36.553 に答える
3

文字列に最大4つの数値部分(で区切られている.)がある場合は、クラスを使用して、Versionこれらの文字列に対応する強く型付けされたエンティティを取得できます。Versionさまざまな比較演算子(、、など)を期待どおりに実装する==ため><どちらが大きいかを確認できます。

var a = new Version(A);
var b = new Version(B);

if(a > b)
  // a is larger
else if (a < b)
  // b is larger
else
  // they are identical

4つを超える部分がある場合は、各文字列をその数値コンポーネントに分割し、それぞれを同等の数値に変換して、結果の2つのコレクションを比較する必要があります。

何かのようなもの:

var aParts = A.Split('.');
var bParts = B.Split('.');

// assumes the string have the same number of parts
for(int i = 0; i < aParts.Length; i++)
{
  var currA = int.Parse(aParts[i]);
  var currB = int.Parse(bParts[i]);

  if(currA == currB)
    continue;

  if(currA > currB)
    // A is greater than B      
  else
    // B is greater than A
}
于 2013-03-21T20:31:59.583 に答える
3

System.Versionあなたはクラスを見ることができます。文字列がこの形式であるか、バージョンに変換できる場合。

バージョンには比較対象があります

于 2013-03-21T20:32:27.077 に答える
1

.NETのバージョン文字列を比較する場合は、 Versionクラスを使用できます。

Version version = new Version("1.0.0.0");
Version otherVersion = new Version(""1.0.0.1");

このクラスは、バージョンが別のバージョンよりも大きいか小さいかを確認するための演算子を提供します。

于 2013-03-21T20:32:31.290 に答える
1

「。」で分割します。次に、各部分をintに変換します。左から開始:Aのフラグメントが低い場合は、Aが最初であることを報告します。Bのフラグメントが低い場合は、Bが最初であることを報告します。それ以外の場合は、次のフラグメントに移動します。すでに最後のフラグメントにいる場合は、それらが等しいことを報告してください。

文字列に最大4つの部分(バージョン番号など)がある場合は、他の人が示唆しているように、System.Versionクラスを使用する方が簡単です。

于 2013-03-21T20:32:35.593 に答える
-2

VersionClassを使用する代わりに、高速なアプローチは次のようになります。

string A = "1.0.0.0";
string B = "1.0.0.1";

int versionA = Convert.ToInt32(A.Replace(".", string.Empty));
int versionB = Convert.ToInt32(B.Replace(".", string.Empty));

if (b>a)
//something will happen here

Replaceは、最初の文字列を2番目の文字列(この場合はstring.Empty = "")に変更します。

于 2013-04-30T18:39:49.387 に答える