131 votes

Comment supprimer tous les espaces blancs en java

J'ai un devoir de programmation et une partie de celui-ci me demande de créer un code qui lit une ligne de l'utilisateur et supprime tous les espaces blancs dans cette ligne. La ligne peut être composée d'un mot ou plus.

Ce que j'essaie de faire avec ce programme, c'est d'analyser chaque caractère jusqu'à ce qu'il trouve un espace, puis de sauvegarder cette sous-chaîne en tant que premier jeton, puis de reboucler jusqu'à ce qu'il n'y ait plus de jetons ou jusqu'à la fin de la ligne.

Je continue à obtenir ceci lorsque j'essaie de le compiler :

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index   out of range: 1
    at java.lang.String.charAt(String.java:694)
    at trim.main(trim.java:23)

Voici le code

import java.util.Scanner ;
import java.lang.Character;
import java.lang.String ;
public class trim
{
        public static void main (String[]args)
        {

        String a  ;
        String b  ;
        String c ;
        char aChar ;
        int i = 0 ;

        Scanner scan = new Scanner(System.in);

        a = scan.nextLine();
        a =a.trim() ;

         for ( ; i >= 0 ; i++ )
         {
           aChar = a.charAt(i) ;
           if (aChar != 32)
           {
            a = a.substring(0,i+1);
           }
           else
           {
            b = a.substring(i,160) ;
            b= b.trim();
            c = c + a ;
            c = c.trim() ;
            a = b ;
            i = 0 ;
           }
           if (b.equals(null))
           {
            i = -1 ;
           }
         }
        }
}

Des moyens plus faciles de le faire sont appréciés, mais je veux quand même faire fonctionner ce programme.

et je ne peux pas utiliser les sentinelles dans l'entrée.


Merci à tous pour votre aide,

Je vais utiliser la méthode la plus simple, et je vais lire la javadoc.

233voto

kaysush Points 4559

java.lang.String La classe a une méthode substring no substr c'est l'erreur dans votre programme.

De plus, vous pouvez le faire en une seule ligne si vous savez utiliser les expressions régulières.

a.replaceAll("\\s+","");

74voto

Kevin Bowersox Points 48223

Pourquoi ne pas utiliser une regex pour cela ?

a = a.replaceAll("\\s","");

Dans le contexte d'une regex, \s supprimera tout ce qui est un caractère d'espace (y compris les espaces, les caractères de tabulation, etc.). Vous devez échapper la barre oblique inverse en Java pour que la regex se transforme en \\s . Aussi, Comme les chaînes de caractères sont immuables, il est important d'attribuer la valeur de retour de la regex à la variable a .

64voto

Rudziankoŭ Points 605

La façon la plus intuitive de le faire sans utiliser literals o regular expressions :

yourString.replaceAll(" ","");

25voto

Ankur Shanbhag Points 4125

Remplacer tous les espaces dans la chaîne par un caractère vide.

String lineWithoutSpaces = line.replaceAll("\\s+","");

17voto

Achintya Jha Points 7108

Essayez ça :

String str = "Your string with     spaces";
str = str.replace(" " , "");

Prograide.com

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.

Powered by:

X