Comment supprimer tous les espaces blancs en java [dupliquer]

cette question a déjà une réponse ici:

  • supprimer les espaces blancs des chaînes en Java 29 réponses

j'ai une tâche de programmation et une partie de celle-ci m'oblige à faire du code qui lit une ligne de l'utilisateur et supprime tout l'espace blanc à l'intérieur de cette ligne. la ligne peut composée d'un ou plusieurs mots.

ce que j'ai essayé de faire avec ce programme est de le faire analyser chaque caractère jusqu'à ce qu'il trouve un espace et puis enregistrer cette soustraction comme premier jeton. puis boucle à nouveau jusqu'à ce qu'il n'atteigne plus de jetons ou la fin de la ligne.

je continue à obtenir ceci quand 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 façons plus faciles de faire ceci est apprécié, mais je veux quand même que ce programme fonctionne.

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


Merci à tous pour toute l'aide,

j'utiliserai la méthode la plus simple , et je lirai le javadoc.

64
demandé sur Community 2013-03-26 13:16:40

14 réponses

java.lang.String Classe A Méthode substring pas substr , c'est l'erreur dans votre programme.

de plus, vous pouvez faire ceci en une seule ligne si vous êtes ok en utilisant l'expression régulière.

a.replaceAll("\s+","");
144
répondu kaysush 2013-03-26 09:19:37

pourquoi ne pas utiliser un regex pour cela?

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

Dans le contexte d'une regex, \s va supprimer tout ce qui est un caractère d'espacement (espace, tabulation, etc). Vous devez échapper à L'antislash en Java pour que le regex se transforme en \s . Aussi, puisque les chaînes sont immuables, il est important que vous assigniez la valeur de retour du regex à a .

42
répondu Kevin Bowersox 2013-03-26 09:19:52

la manière la plus intuitive de le faire sans utiliser literals ou regular expressions :

yourString.replaceAll(" ","");
30
répondu Rudziankoŭ 2016-04-06 07:31:48

remplacer tous les espaces de la chaîne par un caractère vide.

String lineWithoutSpaces = line.replaceAll("\s+","");
21
répondu Ankur Shanbhag 2013-03-26 09:19:50

essayez ceci:

String str = "Your string with     spaces";
str = str.replace(" " , "");
9
répondu Achintya Jha 2013-03-26 09:19:06

, Essayez:

  string output = YourString.replaceAll("\s","")

s-indique un caractère d'espace (caractères tab etc.)

9
répondu CloudyMarble 2013-03-26 09:19:09
package com.infy.test;

import java.util.Scanner ;
import java.lang.String ;

public class Test1 {


    public static void main (String[]args)
    {

        String a  =null;


        Scanner scan = new Scanner(System.in);
        System.out.println("*********White Space Remover Program************\n");
        System.out.println("Enter your string\n");
    a = scan.nextLine();
        System.out.println("Input String is  :\n"+a);


        String b= a.replaceAll("\s+","");

        System.out.println("\nOutput String is  :\n"+b);


    }
}
5
répondu Shivansh Rajan 2013-03-26 21:44:56
public static String removeSpace(String s) {
    String withoutspaces = "";
    for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) != ' ')
            withoutspaces += s.charAt(i);

    }
    return withoutspaces;

}

c'est la méthode la plus simple et la plus directe pour supprimer des espaces d'une chaîne.

3
répondu Mohamad Yaghmour 2015-11-12 10:24:47

vous ne pouvez pas utiliser la chaîne de caractères.remplacer(" ", "");

2
répondu Isaac 2013-03-26 09:20:56

vous pouvez utiliser une expression régulière pour supprimer les espaces blancs , essayez cet extrait:

Scanner scan = new Scanner(System.in);
    System.out.println(scan.nextLine().replaceAll(" ", ""));
2
répondu javadev 2013-03-26 09:21:29
trim.java:30: cannot find symbol
symbol  : method substr(int,int)
location: class java.lang.String
b = a.substr(i,160) ;

il n'y a pas de méthode comme substr dans la classe String.

utilisez String.méthode substring ().

1
répondu AmitG 2013-03-26 09:21:55
String a="string with                multi spaces ";
//or this 
String b= a.replaceAll("\s+"," ");

String c= a.replace("    "," ").replace("   "," ").replace("  "," ").replace("   "," ").replace("  "," ");

//il fonctionne bien avec les espaces

*n'oubliez pas d'espace dans sting b

-2
répondu fatsoft 2016-02-17 00:55:39
boolean flag = true;
while(flag) {
    s = s.replaceAll(" ", "");
    if (!s.contains(" "))
        flag = false;
}
return s;
-2
répondu Lalit 2016-04-06 07:27:40
String a="string with                multi spaces ";

String b= a.replace("    "," ").replace("   "," ").replace("  "," ").replace("   "," ").replace("  "," ");

//il fonctionne bien avec les espaces

-9
répondu fatsoft 2016-02-16 23:07:47