J'ai fait une petite recherche à ce sujet mais je n'ai rien trouvé d'utile.
Le fait est que si la valeur de String est "true" ou "false", la valeur de retour doit être true. Dans toute autre valeur, cela devrait être faux.
J'ai essayé ceux-ci:
String value = "false";
System.out.println("test1: " + Boolean.parseBoolean(value));
System.out.println("test2: " + Boolean.valueOf(value));
System.out.println("test3: " + Boolean.getBoolean(value));
Toutes les fonctions ont renvoyé false :(
Il n'existe aucune méthode pour vérifier si une chaîne code un booléen. pour tous les effets pratiques, toute chaîne non "vraie" est "fausse".
return "true".equals(value) || "false".equals(value);
Apache commons-lang3 a BooleanUtils avec une méthode toBooleanObject:
BooleanUtils.toBooleanObject(String str)
// where:
BooleanUtils.toBooleanObject(null) = null
BooleanUtils.toBooleanObject("true") = Boolean.TRUE
BooleanUtils.toBooleanObject("false") = Boolean.FALSE
BooleanUtils.toBooleanObject("on") = Boolean.TRUE
BooleanUtils.toBooleanObject("ON") = Boolean.TRUE
BooleanUtils.toBooleanObject("off") = Boolean.FALSE
BooleanUtils.toBooleanObject("oFf") = Boolean.FALSE
BooleanUtils.toBooleanObject("blue") = null
Peut aussi le faire par regex:
Pattern queryLangPattern = Pattern.compile("true|false", Pattern.CASE_INSENSITIVE);
Matcher matcher = queryLangPattern.matcher(booleanParam);
return matcher.matches();
if ("true".equals(value) || "false".equals(value)) {
// do something
} else {
// do something else
}
Les méthodes que vous appelez dans la classe Boolean
ne vérifient pas si la chaîne contient une valeur booléenne valide, mais elles renvoient la valeur booléenne qui représente le contenu de la chaîne: put "true" dans la chaîne, elles retournent true
, put " false "dans la chaîne, ils renvoient false
.
Cependant, vous pouvez sûrement utiliser ces méthodes pour vérifier les valeurs booléennes valides, car je m'attendrais à ce qu'elles lèvent une exception si la chaîne contient "hello" ou quelque chose qui n'est pas booléen.
Enveloppez cela dans une méthode ContainsBoolString
et c'est parti.
MODIFIER
Au fait, en C #, il existe des méthodes comme bool Int32.TryParse(string x, out int i)
qui vérifient si le contenu peut être analysé, puis renvoient le résultat analysé.
int i;
if (Int32.TryParse("Hello", out i))
// Hello is an int and its value is in i
else
// Hello is not an int
Les repères indiquent qu'ils sont bien plus rapides que les suivants:
int i;
try
{
i = Int32.Parse("Hello");
// Hello is an int and its value is in i
}
catch
{
// Hello is not an int
}
Peut-être existe-t-il des méthodes similaires en Java? Cela fait longtemps que je n'ai pas utilisé Java ...
En fait, il est impossible de rechercher un type booléen dans une chaîne (qui est un type). Fondamentalement, vous demandez comment faire une "comparaison de chaîne".
Comme d'autres ont déclaré. Vous devez définir quand vous voulez renvoyer "true" ou "false" (dans quelles conditions). Voulez-vous qu'il soit sensible à la casse? Et si la valeur est nulle?
Je pense que Boolean.valueOf () est votre ami, javadoc dit:
Retourne un booléen avec une valeur représentée par la chaîne spécifiée. La valeur booléenne renvoyée représente la valeur true si l'argument de chaîne n'est pas null et égal à la chaîne "true", en ignorant la casse.
Exemple: Boolean.valueOf ("True") renvoie true.
Exemple: Boolean.valueOf ("yes") renvoie false.
String value = "True";
boolean result = value.equalsIgnoreCase("true") ? true : false;
Oui, mais n'avez-vous pas analysé "faux"? Si vous analysez "true", ils retournent true.
Il y a peut-être un malentendu: les méthodes ne testent pas, si le contenu de String représente une valeur booléenne, elles évaluent le contenu de String en booléen.
Regardez aussi org.Apache.commons.lang.BooleanUtils # toBoolean (Java.lang.String), ainsi que beaucoup d'autres fonctions utiles.
function isBooleanString(val) {
if (val === "true" || val === "false"){
return true
} else {
return false
}
}
isBooleanString("true") // true
isBooleanString("false") // true
isBooleanString("blabla") // false
return value.equals("false") || value.equals("true");
Vous devez également prendre en compte le caractère du personnage ...
Au lieu de:
return value.equals("false") || value.equals("true");
Faire ceci:
return value.equalsIgnoreCase("false") || value.equalsIgnoreCase("true");
Voici une méthode que vous pouvez utiliser pour vérifier si une valeur est un booléen:
boolean isBoolean(String value) {
return value != null && Arrays.stream(new String[]{"true", "false", "1", "0"})
.anyMatch(b -> b.equalsIgnoreCase(value));
}
Exemples d'utilisation:
System.out.println(isBoolean(null)); //false
System.out.println(isBoolean("")); //false
System.out.println(isBoolean("true")); //true
System.out.println(isBoolean("fALsE")); //true
System.out.println(isBoolean("asdf")); //false
System.out.println(isBoolean("01truefalse")); //false
Je vous suggère de consulter la documentation Java pour ces méthodes. Il semble que vous ne les utilisiez pas correctement. Ces méthodes ne vous diront pas si la chaîne est une valeur booléenne valide, mais renverront plutôt un booléen, défini sur true ou false, en fonction de la chaîne que vous avez transmise, "true" ou "false".
Voir la documentation Oracle
public static boolean parseBoolean(String s) {
return ((s != null) && s.equalsIgnoreCase("true"));
}