java-me: convertissez la chaîne en booléen
je me développe pour BlackBerry et je suis coincé avec ce problème stupide:
je dois convertir les valeurs de chaîne "1" et " 0 " en true et false, respectivement. Néanmoins, Blackberry JDK est basé en Java 1.3, donc je ne peux pas utiliser booléen.parseBoolean, Boolean.valeur ou valeur booléenne.getValue.
Évidemment, je peux faire quelque chose comme:
if (str.equals("1")) return true;
else if (str.equals("0")) return false;
mais cela semble très laid et peut-être que ces valeurs de chaîne de caractères pourraient changer en "vrai" et "faux" plus tard. Alors, Est-il un autre façon de convertir entre ces types (chaîne - > booléen, Java 1.3)?
UPDATED: toutes les réponses à cette question étaient très utiles, mais je devais en noter Une, donc j'ai choisi la réponse d'Ishtar.
malgré tout, mon correctif était une combinaison de plusieurs réponses.
6 réponses
public static boolean stringToBool(String s) {
if (s.equals("1"))
return true;
if (s.equals("0"))
return false;
throw new IllegalArgumentException(s+" is not a bool. Only 1 and 0 are.");
}
si vous le changez plus tard en "true / false", vous ne commanderez pas accidentellement 28 000 tonnes de charbon. Appeler avec le mauvais paramètre lancera une exception, au lieu de deviner et retourner false. À mon avis "pancake"
n'est pas false
.
Si vous n'avez pas Boolean.valueOf(String s)
... ouais, c'est assez bien. Je définirais votre propre méthode statique comme:
public static boolean booleanFromString(String s)
{
return s.equals("1");
}
cela résoudrait votre problème" peut changer en vrai ou faux plus tard " car vous pourriez ajouter/changer cela dans la méthode et ne pas avoir à changer quoi que ce soit d'autre dans votre code.
peut-être que ces valeurs de chaîne pourrait changer "true" et "false" plus tard
ne codez pas votre paramètre.
alors définissez votre propre méthode comme celle-ci.
public static final String TRUE = "true"; //"1"
public static boolean strToBool(String s) {
// don't hard code your parameter.
return str.equalsIgnoreCase(TRUE);
}
Java est Boolean
l'objet (si je me souviens bien) a déjà 2 constantes:
Boolean.TRUE
Boolean.FALSE
vous pouvez utiliser Boolean.booleanValue()
pour le retour de la correspondante boolean
valeur.
Vous pouvez créer votre propre valueOf(String s)
méthode retourne un boolean
et/ou Boolean
comme ceci:
public static boolean toBoolean(String s) {
return ((s != null) && s.equalsIgnoreCase("true"));
}
public static Boolean valueOf(String s) {
return (toBoolean(s)? Boolean.TRUE : Boolean.FALSE);
}
vous devez cocher les cases null et whitespace. les retirer et vérifier la valeur.
return (str!=null && str.trim().equals("1"));
public static boolean stringToBool(String s) {
s = s.toLowerCase();
Set<String> trueSet = new HashSet<String>(Arrays.asList("1", "true", "yes"));
Set<String> falseSet = new HashSet<String>(Arrays.asList("0", "false", "no"));
if (trueSet.contains(s))
return true;
if (falseSet.contains(s))
return false;
throw new IllegalArgumentException(s + " is not a boolean.");
}
Améliorer Ishfar répondre.