J'ai un string
qui peut être soit "0" soit "1", et il est garanti que ce ne sera rien d'autre.
La question est donc : quelle est la manière la meilleure, la plus simple et la plus élégante de convertir cela en bool
?
J'ai un string
qui peut être soit "0" soit "1", et il est garanti que ce ne sera rien d'autre.
La question est donc : quelle est la manière la meilleure, la plus simple et la plus élégante de convertir cela en bool
?
Ignorant les besoins spécifiques de cette question, et bien que ce ne soit jamais une bonne idée de convertir une chaîne en booléen, une façon serait d'utiliser la méthode ToBoolean() sur la classe Convert :
bool val = Convert.ToBoolean("true");
ou une méthode d'extension pour faire n'importe quel mappage étrange que vous faites :
public static class StringExtensions
{
public static bool ToBoolean(this string value)
{
switch (value.ToLower())
{
case "true":
return true;
case "t":
return true;
case "1":
return true;
case "0":
return false;
case "false":
return false;
case "f":
return false;
default:
throw new InvalidCastException("You can't cast that value to a bool!");
}
}
}
Je sais que cela ne répond pas à votre question, mais juste pour aider les autres. Si vous essayez de convertir des chaînes "true" ou "false" en booléen :
Essayez Boolean.Parse
bool val = Boolean.Parse("true"); ==> true
bool val = Boolean.Parse("True"); ==> true
bool val = Boolean.Parse("TRUE"); ==> true
bool val = Boolean.Parse("False"); ==> false
bool val = Boolean.Parse("1"); ==> Exception!
bool val = Boolean.Parse("diffstring"); ==> Exception!
J'ai fait quelque chose d'un peu plus extensible, en m'appuyant sur le concept de Mohammad Sepahvand :
public static bool ToBoolean(this string s)
{
string[] trueStrings = { "1", "y" , "yes" , "true" };
string[] falseStrings = { "0", "n", "no", "false" };
if (trueStrings.Contains(s, StringComparer.OrdinalIgnoreCase))
return true;
if (falseStrings.Contains(s, StringComparer.OrdinalIgnoreCase))
return false;
throw new InvalidCastException("only the following are supported for converting strings to boolean: "
+ string.Join(",", trueStrings)
+ " and "
+ string.Join(",", falseStrings));
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.