web-dev-qa-db-fra.com

Comment supprimer tous les espaces blancs dans java

J'ai une tâche de programmation et une partie de celle-ci nécessite que je crée un code qui lit une ligne de l'utilisateur et supprime tous les espaces vides de cette ligne. la ligne peut être composée d'un mot ou plus.

Ce que j'essayais de faire avec ce programme, c'est de le faire analyser chaque caractère jusqu'à ce qu'il trouve un espace, puis enregistrez cette sous-chaîne en tant que premier jeton. puis boucle à nouveau jusqu'à ce qu'il n'atteigne plus de jetons ou la fin de la ligne.

Je continue à l'obtenir 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 toujours que ce programme fonctionne.

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


Merci à tous pour toute l'aide,

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

99
Aiman Kh

Java.lang.String la classe a la méthode substring pas substr, c'est l'erreur dans votre programme.

De plus, vous pouvez le faire en une seule ligne si vous utilisez bien l'expression régulière.

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

Pourquoi ne pas utiliser une regex pour cela?

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

Dans le contexte d'une expression rationnelle, \s supprimera tout ce qui est un caractère d'espace (y compris l'espace, les caractères de tabulation, etc.). Vous devez échapper la barre oblique inverse dans Java pour que l'expression régulière devienne \\s. En outre, étant donné que les chaînes sont immuables, il est important d’attribuer la valeur de retour de l’expression régulière àa.

56
Kevin Bowersox

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

yourString.replaceAll(" ","");
47
Rudziankoŭ

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

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

Essaye ça:

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

Essayer:

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

s - indique un caractère d'espacement (tabulation, etc.)

12
CloudyMarble
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);


    }
}
6
Shivansh Rajan
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 simple pour supprimer des espaces dans une chaîne.

4
Mohamad Yaghmour

Vous ne pouvez pas simplement utiliser String.replace ("", "");

3
Isaac

Vous pouvez utiliser une expression régulière pour supprimer des espaces, essayez cet extrait:

Scanner scan = new Scanner(System.in);
    System.out.println(scan.nextLine().replaceAll(" ", ""));
2
javadev
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 la méthode String.substring ().

1
AmitG
String a="string with                multi spaces ";
//or this 
String b= a.replaceAll("\\s+"," ");

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

// ça marche bien avec tous les espaces

* N'oubliez pas l'espace dans Sting B

0
fatsoft