Wspólna FormatHelper
klasy poniżej stanowi proste rozwiązanie, za pomocą dwóch odmian przeciążonej metody zwanej StringToBoolean
.
FormatHelper.StringToBoolean(String value)
FormatHelper.StringToBoolean(String value, Boolean NullOrEmptyDefault)
Oba warianty stanowią przypadek-insentive ciągu dopasowanie
1) normalne konwersja z łańcucha wartościach logicznych zalegających pustych lub zerowe ciągi false
poniższych przykładach prowadzić wartość boolean
wartość 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");
Wszystkie inne wartości łańcuchowe spowoduje wartości Boolean
z true
takich jak: -
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");
Uwaga: Edycja wartości BooleanStringOff
w klasie poniżej zawierać więcej (lub mniej) wartości false/off
2) Stosuje takie same zasady jak 1) powyżej, ale umożliwia podanie wartości domyślnej true
jako drugiego argumentu konwersji.
Wartość domyślna jest używana, gdy wartość String
jest pusta lub null
. Jest to przydatne, jeśli brakująca wartość ciągu musi oznaczać stan true
.
poniższym przykładzie powróci true
Boolean myBool = FormatHelper.StringToBoolean("",true);
Poniższy przykład kod zwróci false
Boolean myBool = FormatHelper.StringToBoolean("false",true);
To Kod klasy
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;
}
}
Dzięki! Tego właśnie szukałem, wyjaśnienia dlaczego. Jeśli niektóre języki rzeczywiście używają wartości 0 dla wartości true, a wartości -1 dla wartości false, szczerze myślę, że są spieprzone, ale jest to świetny powód, aby nie przyjmować automatycznie przez analizę, której niektórzy deweloperzy mogą używać na ślepo. –
Dlaczego, tak. Tak, powinien obsłużyć tak/nie off/on. – WEFX
Aby wyjaśnić, dlaczego niektóre języki używają wartości 0 dla wartości true i wartości -1 dla wartości false, należy rozważyć ich reprezentacje binarne: '00000000' i' 11111111'. – MCattle