2012-01-05 34 views
1

私はVIN番号を有用な情報にデコードしており、その国では2文字の範囲を指定しています(EG:SA-SMは英国です)。 SGがSAとSMの間にいることを確認するにはどうすればよいですか?私はヘックスについて考えていましたが、これは過去のEを過ぎているためヘックスに変換することはできません。文字列が2文字の間にあるか確認してください

答えて

6
if (String.Compare("SG","SA") > 0 && String.Compare("SG","SM") < 0) 
{ // SG between SA and SM 
} 

ます。また、この方法をお試しくださいのCurrentCulture、CurrentCultureIgnoreCase、にInvariantCulture、InvariantCultureIgnoreCase、序、OrdinalIgnoreCase(msdn docs

if (String.Compare("SG","SA",CurrentCultureIgnoreCase) > 0 && String.Compare("SG","SM",CurrentCultureIgnoreCase) < 0) 
{ // SG between SA and SM 
} 
+0

恐ろしい、ありがとう! –

+0

文字列にも 'CompareOrdinal'メソッドがあります。文字列に文字と数字の両方が含まれている場合(vinかもしれません)、これはうまくいきます。がんばろう。 – Hogan

2

数字を使用することを強くお勧めする場合は、ヘクスだけではありません。

var str = "SK"; 
var base26 = 26*(str[0]-'A')+(str[1]-'A'); 

両方の文字列が同じ長さである限り、文字列を辞書的に比較することは問題ありません。

+0

小文字の「a」があると楽しいです:D – Hogan

+0

@Hogan小文字の「a」がどこから来たのでしょうか?文字列を '' SK '''に初期化したのですか? :) :) :)ジョークを除いて、私は良い点を挙げました:文字列は大文字に変換する必要があり、ベース26に変換する前に文字のみを含むようにチェックしてください。 – dasblinkenlight

+0

ええ、それはまさに私のポイントでした。ロールオーダーは楽しいですが、 'String.Compare'は、既に書かれているより多くのパワーを与えます。 – Hogan

0

のいずれかを使用することができます

if (String.Compare("SG","SA",true) > 0 && String.Compare("SG","SM",true) < 0) 
{ // SG between SA and SM 
} 

ケースを無視:

string test= "SASGSM"; 
if(test.IndexOf("SG") > -1) { 

//your action 

} 
+2

これは彼が「間」で意味するものではありません –

+1

はい、彼は文字通り文字列の中の文字ではなく「間の範囲」について話しています。 –

3
value[0] == 'S' && value[1] >= 'A' && value[1] <= 'M' 
+0

これも機能します...ありがとう! –

関連する問題