2013-03-22 17 views
6

Ho un elenco di valori ad esempio: G1, G2, G2.5, G3, G4, ecc.) Come posso controllare un intervallo di questi valori in C# diciamo se Volevo vedere se il valore era compreso tra G1 e G2.5?Verifica intervallo di valori stringa che contiene un numero

In Vb.net che posso fare:

 Select Case selectedValue 
      Case "G1" To "G2.5" //This would be true for G1, G2, and G2.5 

Come posso fare questo in C#?

risposta

4
  1. Rimuovi G da selectedValue
  2. Analizza il rimanente in un decimal
  3. implementare la logica contro il valore decimale

-

var number = decimal.Parse(selectedValue.Replace("G", "")); 
if (number >= 1.0m && number <= 2.5m) 
{ 
    // logic here 
} 
+0

Grazie, penso che una di queste risposte funzionerebbe, ma la tua è la quantità minima di codice. Apprezzalo. – TMan

+0

Non è solo meno codice, è anche più elegante. :) –

2

Per fare il confronto di stringhe, si può solo fare questo

if (string.Compare(selectedValue, "G1") >= 0 && string.Compare(selectedValue, "G2.5") <= 0) 
{ 
    ... 
} 

Ma per fare confronto numerico, che avrebbe dovuto analizzare come un numero (o doubledecimal)

var selectedValueWithoutG = selectedValue.Substring(1); 
var number = decimal.Parse(selectedValueWithoutG); 
if (number >= 1D && number <= 2.5D) 
{ 
    ... 
} 
2

prima cosa è necessario analizzare il vostro valore:

var number = decimal.Parse(selectedValue.Substring(1)) 

allora si può applicare un metodo di estensione in questo modo:

bool Between(this int value, int left, int right) 
{ 
    return value >= left && value <= right; 
} 

if(number.Between(1, 2.5)) {.....} 
Problemi correlati