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"
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+","")
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.)
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.)
Wie wäre es mit replaceAll("\\s", "")
. hier .
Wenn Sie auch unzerbrechliche Leerzeichen entfernen müssen, können Sie Ihren Code folgendermaßen aktualisieren:
st.replaceAll("[\\s|\\u00A0]+", "");
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.
Wenn Sie Utility-Klassen gegenüber Regex bevorzugen, gibt es im Spring Framework eine Methode trimAllWhitespace (String) in StringUtils.
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
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".
Du kannst es so einfach mit machen
String newMysz = mysz.replace(" ","");
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.
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
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
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);
}
}
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.
Verwenden Sie mysz.replaceAll("\\s+","");
\W
bedeutet "kein Word-Zeichen". Das Muster für Leerzeichen ist \s
. Dies ist im Pattern javadoc gut dokumentiert.
mysz = mysz.replace(" ","");
Zuerst mit Leerzeichen, zweitens ohne Leerzeichen.
Dann ist es fertig.
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);
}
}
Verwenden Sie die Apache-Zeichenfolge-util-Klasse, um NullPointerException zu vermeiden
org.Apache.commons.lang3.StringUtils.replace("abc def ", " ", "")
Ausgabe
abcdef
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]", "")
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
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.
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);
}
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
Wenn Sie st.replaceAll("\\s+","")
in Kotlin verwenden, stellen Sie sicher, dass Sie "\\s+"
mit Regex umschließen.
"myString".replace(Regex("\\s+"), "")
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.
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);
}