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.
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+","");
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
.
la manière la plus intuitive de le faire sans utiliser literals
ou regular expressions
:
yourString.replaceAll(" ","");
remplacer tous les espaces de la chaîne par un caractère vide.
String lineWithoutSpaces = line.replaceAll("\s+","");
essayez ceci:
String str = "Your string with spaces";
str = str.replace(" " , "");
, Essayez:
string output = YourString.replaceAll("\s","")
s-indique un caractère d'espace (caractères tab etc.)
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);
}
}
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.
vous ne pouvez pas utiliser la chaîne de caractères.remplacer(" ", "");
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(" ", ""));
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 ().
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
boolean flag = true;
while(flag) {
s = s.replaceAll(" ", "");
if (!s.contains(" "))
flag = false;
}
return s;
String a="string with multi spaces ";
String b= a.replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ").replace(" "," ");
//il fonctionne bien avec les espaces