Il comune FormatHelper
classe illustrato di seguito fornisce una soluzione semplice utilizzando due varianti di un metodo di overload chiamato StringToBoolean
.
FormatHelper.StringToBoolean(String value)
FormatHelper.StringToBoolean(String value, Boolean NullOrEmptyDefault)
Entrambe le varianti prevedono la stringa di corrispondenza insentive caso
1) La conversione normale da stringa in boolean inadempiente stringhe vuote o nulli false
I seguenti esempi provocherà un valore boolean
di false
: -
Boolean myBool = FormatHelper.StringToBoolean("");
Boolean myBool = FormatHelper.StringToBoolean("0");
Boolean myBool = FormatHelper.StringToBoolean("false");
Boolean myBool = FormatHelper.StringToBoolean("False");
Boolean myBool = FormatHelper.StringToBoolean("no");
Boolean myBool = FormatHelper.StringToBoolean("off");
Tutti gli altri valori di stringa si tradurrà in un valore Boolean
di true
quali: -
Boolean myBool = FormatHelper.StringToBoolean("1");
Boolean myBool = FormatHelper.StringToBoolean("true");
Boolean myBool = FormatHelper.StringToBoolean("True");
Boolean myBool = FormatHelper.StringToBoolean("yes");
Boolean myBool = FormatHelper.StringToBoolean("xyz blah");
Nota: modificare il valore della BooleanStringOff
nella classe di seguito per includere i valori più (o meno) per falso in/off
2) segue le stesse regole 1) sopra, ma permette un valore predefinito di true
da fornire la 2 argomento della conversione.
Il valore predefinito viene utilizzato quando il valore String
è vuoto o null
. Ciò è utile se un valore stringa mancante deve indicare uno stato true
.
Il seguente esempio di codice restituirà true
Boolean myBool = FormatHelper.StringToBoolean("",true);
Il seguente esempio codice di ritorno false
Boolean myBool = FormatHelper.StringToBoolean("false",true);
Questo è il codice per la classe FormatHelper
public class FormatHelper
{
public static Boolean StringToBoolean(String str)
{
return StringToBoolean(str, false);
}
public static Boolean StringToBoolean(String str, Boolean bDefault)
{
String[] BooleanStringOff = { "0", "off", "no" };
if (String.IsNullOrEmpty(str))
return bDefault;
else if(BooleanStringOff.Contains(str,StringComparer.InvariantCultureIgnoreCase))
return false;
Boolean result;
if (!Boolean.TryParse(str, out result))
result = true;
return result;
}
}
Grazie! Questo è quello che stavo cercando, una spiegazione del perché. Se alcune lingue effettivamente usano 0 per vero, e -1 per falso, penso sinceramente che siano incasinate, ma questo è un buon motivo per non assumere automaticamente attraverso un'analisi che alcuni sviluppatori potrebbero usare ciecamente. –
Perché, sì. Sì, dovrebbe gestire sì/no off/on. – WEFX
Per spiegare ulteriormente perché alcune lingue usano 0 per vero e -1 per falso, considera le loro rappresentazioni binarie: '00000000' e' 11111111'. – MCattle