web-dev-qa-db-fra.com

Conversion d'une chaîne avec des espaces en un entier en java

J'essaie de convertir une variable de chaîne en un entier, seule la chaîne ressemble à ceci (par exemple):

String string = " 12";

Et ainsi la chaîne a un espace devant elle. Maintenant, la variable String est en train d'être lue à partir d'un fichier .txt, c'est pourquoi j'ai le problème d'avoir un espace devant elle. J'ai besoin de convertir la variable en int, mais quand j'essaie:

int integer = Integer.parseInt(string);

pour passer la chaîne à un entier, il compile, mais j'obtiens une erreur lorsque j'essaie d'exécuter le programme, car il y a un espace blanc dans la chaîne. 

Est-il possible de passer une chaîne de nombres avec un espace devant elle dans un int? Est-ce que .trim fonctionnerait? Et si oui, comment pourrais-je l'utiliser? (Je ne connais pas très bien .trim, j'apprends encore !!) J'apprécie l'aide! ^ _ ^

10
k1234

Est-ce que .trim fonctionnerait? Et si oui, comment pourrais-je l'utiliser?

Oui, trim() fonctionnera, cela supprimera les espaces de début et de fin de String,

int integer = Integer.parseInt(string.trim());
13
Masudul

Utilisez la fonction de découpage de chaîne en Java pour obtenir une chaîne sans espaces, puis analysez-la ...

1.) Supprimer les espaces avec trim ... String # trim

String stringWithoutSpace = string.trim();

2.) Analyse la chaîne sans espaces ... Integer # parseInt

int integer = Integer.parseInt(stringWithoutSpace);

3.) Faites tout ce qui précède en une étape ... 

int integer = Integer.parseInt(string.trim());
6
Josh Engelsma

La méthode string split () fonctionne bien si vous avez une chaîne de plusieurs nombres séparés par des espaces.

String numbers = "1 23 456";
String[] numbersArray = numbers.split(" "); // splitting string by spaces
System.out.println(numbersArray.toString());
// output ["1","23","456"]

Ensuite, vous pouvez utiliser Integer.parseInt () sur chaque index du tableau. J'espère que cela pourra aider

5
marcomarandiz

Pour vous assurer que votre code ne renvoie pas NumberFormatException ni même NullPointerException, lorsque vous obtenez le numéro de l'utilisateur, utilisez les classes courantes Apache:

import org.Apache.commons.lang3.StringUtils;
import org.Apache.commons.lang3.math.NumberUtils;
.....
// '1' is the default value which is returned when the string can not be converted to int
// The StringUtils.trimToEmpty do both left and right trim
int number = NumberUtils.toInt(StringUtils.trimToEmpty( "  12 ",1)) = 12; 
0
Alireza Fattahi

Si vous utilisez Java 11, vous pouvez utiliser la méthode String::strip. Par exemple: 

int integer = Integer.parseInt(string.strip());

La méthode strip() est similaire à trim() mais utilise Character.isWhitespace(int) pour résoudre les espaces. (La méthode Character.isWhitespace(int) est compatible avec Unicode.)

0
Gilbert Lopez