it-swarm.com.de

Entfernen von Leerzeichen aus Zeichenfolgen in Java

Ich habe eine Zeichenfolge wie diese: 

mysz = "name=john age=13 year=2001";

Ich möchte die Leerzeichen in der Zeichenfolge entfernen. Ich habe trim() ausprobiert, aber dies entfernt nur Leerzeichen vor und nach der gesamten Zeichenfolge. Ich habe auch replaceAll("\\W", "") ausprobiert, aber dann wird auch der = entfernt.

Wie kann ich eine Zeichenfolge erreichen mit:

mysz2 = "name=johnage=13year=2001"
612
zyamat

st.replaceAll("\\s+","") entfernt alle Leerzeichen und nicht sichtbaren Zeichen (z. B. Tabulator \n).


st.replaceAll("\\s+","") und st.replaceAll("\\s","") erzeugen das gleiche Ergebnis.

Der zweite Regex ist 20% schneller als der erste, aber wenn die Anzahl der aufeinander folgenden Leerzeichen zunimmt, ist der erste besser als der zweite.


Weisen Sie den Wert einer Variablen zu, wenn sie nicht direkt verwendet wird:

st = st.replaceAll("\\s+","")
1194
Gursel Koca
replaceAll("\\s","")

\w = Alles, was ein Word-Zeichen ist

\W = Alles, was kein Word-Zeichen ist (einschließlich Satzzeichen usw.)

\s = Alles, was ein Leerzeichen ist (einschließlich Leerzeichen, Tabulatorzeichen usw.)

\S = Alles, was kein Leerzeichen ist (einschließlich Buchstaben und Zahlen sowie Satzzeichen usw.)

(Bearbeiten: Wie bereits erwähnt, müssen Sie den umgekehrten Schrägstrich entfernen, wenn \s die Regex-Engine erreichen soll, was \\s ergibt.)

228
nitro2k01

Die richtigste Antwort auf die Frage lautet:

String mysz2 = mysz.replaceAll("\\s","");

Ich habe diesen Code gerade von den anderen Antworten angepasst. Ich poste es, weil es nicht nur genau das ist, was die Frage verlangt, sondern auch zeigt, dass das Ergebnis als neue Zeichenfolge zurückgegeben wird, die ursprüngliche Zeichenfolge nicht geändert wird wie manche Antworten implizieren.

(Erfahrene Java-Entwickler könnten sagen: "Natürlich können Sie einen String nicht wirklich modifizieren", aber die Zielgruppe für diese Frage weiß dies möglicherweise nicht.)

96
Fletch

Wie wäre es mit replaceAll("\\s", ""). hier .

55
Erkan Haspulat

Wenn Sie auch unzerbrechliche Leerzeichen entfernen müssen, können Sie Ihren Code folgendermaßen aktualisieren:

st.replaceAll("[\\s|\\u00A0]+", "");
30
v.nivuahc

Eine Möglichkeit, String-Manipulationen auszuführen, ist StringUtils von Apache Commons.

String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces);

Sie finden es hier . Commons-lang enthält viel mehr und wird gut unterstützt.

29
jahir

Wenn Sie Utility-Klassen gegenüber Regex bevorzugen, gibt es im Spring Framework eine Methode trimAllWhitespace (String) in StringUtils.

27
kamczak

Sie haben bereits die richtige Antwort von Gursel Koca erhalten, aber ich glaube, es besteht eine gute Chance, dass dies nicht das ist, was Sie wirklich tun wollen. Wie wäre es stattdessen, die Schlüsselwerte zu analysieren?

import Java.util.Enumeration;
import Java.util.Hashtable;

class SplitIt {
  public static void main(String args[])  {

    String person = "name=john age=13 year=2001";

    for (String p : person.split("\\s")) {
      String[] keyValue = p.split("=");
      System.out.println(keyValue[0] + " = " + keyValue[1]);
    }
  }
}

ausgabe:
name = john
Alter = 13
Jahr = 2001 

25
Jonas Elfström

Du solltest benutzen

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

anstatt:

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

Auf diese Weise funktioniert es mit mehr als einem Leerzeichen zwischen jeder Zeichenfolge. Das + Zeichen in der obigen Regex bedeutet "ein oder mehrere\s".

18
Varejones

Du kannst es so einfach mit machen

String newMysz = mysz.replace(" ","");
7
Vinod Ranga

Der einfachste Weg ist, die org.Apache.commons.lang3.StringUtils-Klasse der commons-lang3-Bibliothek zu verwenden, beispielsweise "commons-lang3-3.1.jar".

Verwenden Sie die statische Methode "StringUtils.deleteWhitespace(String str)" für Ihre Eingabezeichenfolge. Sie gibt eine Zeichenfolge zurück, nachdem Sie alle Leerzeichen entfernt haben. Ich habe Ihren Beispielstring "name=john age=13 year=2001" ausprobiert und gab genau den String zurück, den Sie wollten - "name=johnage=13year=2001". Hoffe das hilft.

6
Ayaskant
public static void main(String[] args) {        
    String s = "name=john age=13 year=2001";
    String t = s.replaceAll(" ", "");
    System.out.println("s: " + s + ", t: " + t);
}

Output:
s: name=john age=13 year=2001, t: name=johnage=13year=2001
6
avngr
String a="string with                multi spaces ";
//or this 
String b= a.replaceAll("\\s+"," ");
String c= a.replace("    "," ").replace("   "," ").replace("  "," ").replace("   "," ").replace("  "," ");

// es funktioniert gut mit irgendwelchen Leerzeichen

4
fatsoft

Mit Pattern And Matcher ist es dynamischer.

import Java.util.regex.Matcher;
import Java.util.regex.Pattern;

public class RemovingSpace {

    /**
     * @param args
     * Removing Space Using Matcher
     */
    public static void main(String[] args) {
        String str= "jld fdkjg jfdg ";
        String pattern="[\\s]";
        String replace="";

        Pattern p= Pattern.compile(pattern);
        Matcher m=p.matcher(str);

        str=m.replaceAll(replace);
        System.out.println(str);    
    }
}
3
jayesh

In Java können wir folgende Operation ausführen:

String pattern="[\\s]";
String replace="";
part="name=john age=13 year=2001";
Pattern p=Pattern.compile(pattern);
Matcher m=p.matcher(part);
part=m.replaceAll(replace);
System.out.println(part);

dazu müssen Sie folgende Pakete in Ihr Programm importieren:

import Java.util.regex.Matcher;
import Java.util.regex.Pattern;

ich hoffe es hilft dir.

3
user27

Verwenden Sie mysz.replaceAll("\\s+","");

3
Mohammad Raza

\W bedeutet "kein Word-Zeichen". Das Muster für Leerzeichen ist \s. Dies ist im Pattern javadoc gut dokumentiert.

3
JB Nizet
mysz = mysz.replace(" ","");

Zuerst mit Leerzeichen, zweitens ohne Leerzeichen. 

Dann ist es fertig. 

2
user2357526
import Java.util.*;
public class RemoveSpace {
    public static void main(String[] args) {
        String mysz = "name=john age=13 year=2001";
        Scanner scan = new Scanner(mysz);

        String result = "";
        while(scan.hasNext()) {
            result += scan.next();
        }
        System.out.println(result);
    }
}
2
Tony Nguyen

Verwenden Sie die Apache-Zeichenfolge-util-Klasse, um NullPointerException zu vermeiden

org.Apache.commons.lang3.StringUtils.replace("abc def ", " ", "")

Ausgabe  

abcdef
2
sendon1982

Es gibt noch andere Leerzeichen in Strings. Daher müssen wir das Leerzeichen möglicherweise durch Strings ersetzen.

Beispiel: NO-BREAK-SPACE, DREI-PRO-EM-SPACE, PUNCTUATION-SPACE

Hier ist die Liste der Leerzeichen http://jkorpela.fi/chars/spaces.html

Wir müssen also etwas ändern

uns für DREI-PER-EM-RAUM

s.replaceAll ("[\ u0020\u2004]", "")

1

es gibt viele Möglichkeiten, dieses Problem zu lösen. Sie können die Split-Funktion verwenden oder die Strings-Funktion ersetzen.

weitere Informationen finden Sie unter smilliar problem http://techno-terminal.blogspot.in/2015/10/how-to-remove-spaces-from-given-string.html

1
satish

Um Leerzeichen in Ihrem Beispiel zu entfernen, können Sie dies auf andere Weise tun:

String mysz = "name=john age=13 year=2001";
String[] test = mysz.split(" ");
mysz = String.join("", mysz);

Was dies bedeutet, konvertiert es in ein Array, wobei die Leerzeichen die Trennzeichen sind, und kombiniert dann die Elemente im Array ohne Leerzeichen.

Es funktioniert ziemlich gut und ist leicht zu verstehen. 

1
Megawatt

Trennen Sie jede Textgruppe in eine eigene Teilzeichenfolge und verketten Sie diese Teilzeichenfolge. Ex. 

public Address(String street, String city, String state, String Zip ) {
               this.street = street;
    this.city = city;
    //Now checking to make sure that state has no spaces...
    int position = state.indexOf(" ");
    if(position >=0) {
        //now putting state back together if it has spaces...
        state = state.substring(0, position) + state.substring(position + 1);  
    } 
0
user9832813

Sie können sich auch den folgenden Java-Code ansehen. Die folgenden Codes verwenden keine "eingebauten" Methoden.

/**
 * Remove all characters from an alphanumeric string.
 */
public class RemoveCharFromAlphanumerics {

    public static void main(String[] args) {

        String inp = "01239Debashish123Pattn456aik";

        char[] out = inp.toCharArray();

        int totint=0;

        for (int i = 0; i < out.length; i++) {
            System.out.println(out[i] + " : " + (int) out[i]);
            if ((int) out[i] >= 65 && (int) out[i] <= 122) {
                out[i] = ' ';
            }
            else {
                totint+=1;
            }

        }

        System.out.println(String.valueOf(out));
        System.out.println(String.valueOf("Length: "+ out.length));

        for (int c=0; c<out.length; c++){

            System.out.println(out[c] + " : " + (int) out[c]);

            if ( (int) out[c] == 32) {
                System.out.println("Its Blank");
                 out[c] = '\'';
            }

        }

        System.out.println(String.valueOf(out));

        System.out.println("**********");
        System.out.println("**********");
        char[] whitespace = new char[totint];
        int t=0;
        for (int d=0; d< out.length; d++) {

            int fst =32;



            if ((int) out[d] >= 48 && (int) out[d] <=57 ) {

                System.out.println(out[d]);
                whitespace[t]= out[d];
                t+=1;

            }

        }

        System.out.println("**********");
        System.out.println("**********");

        System.out.println("The String is: " + String.valueOf(whitespace));

    }
}

Eingang:

String inp = "01239Debashish123Pattn456aik";

Ausgabe:

The String is: 01239123456
0
Deb

Wenn Sie st.replaceAll("\\s+","") in Kotlin verwenden, stellen Sie sicher, dass Sie "\\s+" mit Regex umschließen.

"myString".replace(Regex("\\s+"), "")
0
public static String removeWhiteSpaces(String str){
        String s = "";
        char[] arr = str.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            int temp = arr[i];
            if(temp!=32 && temp!=9){ // 32 ASCII for space and 9 is for Tab
                s+=arr[i];
            }
        }
        return s;
    }

Das könnte helfen.

0
Rajesh Gurbani

Leerzeichen können mithilfe der Funktion isWhitespace aus der Zeichenklasse entfernt werden.

public static void main(String[] args) {
    String withSpace = "Remove white space from line";
    StringBuilder removeSpace = new StringBuilder();

    for (int i = 0; i<withSpace.length();i++){
        if(!Character.isWhitespace(withSpace.charAt(i))){
            removeSpace=removeSpace.append(withSpace.charAt(i));
        }
    }
    System.out.println(removeSpace);
}
0
Abdur Rahman