carattere - charat java metodo



Rimozione di spazi vuoti da stringhe in Java (20)

È possibile ottenere ciò senza utilizzare replaceAll () o qualsiasi metodo predefinito in Java. questo modo è preferito: -

public class RemoveSpacesFromString {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String newString;
        String str = "prashant is good" ;
        int i;
        char[] strArray = str.toCharArray();
        StringBuffer sb =  new StringBuffer();

        for(i = 0; i<strArray.length; i++)
        {
            if(strArray[i]!= ' ' && strArray[i]!= '\t')
            {
                sb.append(strArray[i]);
            }
        }
        System.out.println(sb);

        /*newString = str.replaceAll(" " , "");
        System.out.println(newString);*/
    }
}

https://ffff65535.com

Ho una stringa come questa:

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

Voglio rimuovere gli spazi bianchi nella stringa. Ho provato trim() ma questo rimuove solo gli spazi bianchi prima e dopo l'intera stringa. Ho anche provato replaceAll("\\W", "") ma poi anche = viene rimosso.

Come posso ottenere una stringa con:

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

Che ne dici di replaceAll("\\s", "") . Fare riferimento here .


Dovresti usare

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

invece di:

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

In questo modo, funzionerà con più di uno spazio tra ogni stringa. Il segno + nella regex precedente significa "uno o più \ s"


Hai già ricevuto la risposta corretta da Gursel Koca, ma credo che ci siano buone probabilità che questo non sia ciò che vuoi veramente fare. Che ne dici invece di analizzare i valori-chiave?

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]);
    }
  }
}

produzione:
nome = john
età = 13
anno = 2001


Il modo più semplice per farlo è utilizzare la classe org.apache.commons.lang3.StringUtils della libreria commons-lang3 , ad esempio " commons-lang3-3.1.jar ", ad esempio.

Usa il metodo statico " StringUtils.deleteWhitespace(String str) " sulla stringa di input e ti restituirà una stringa dopo aver rimosso tutti gli spazi bianchi da essa. Ho provato la stringa di esempio " name=john age=13 year=2001 " e mi ha restituito esattamente la stringa che volevi - " name=johnage=13year=2001 ". Spero che questo ti aiuti.


In java possiamo fare le seguenti operazioni:

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

per questo è necessario importare i seguenti pacchetti per il tuo programma:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

spero che ti possa aiutare.


Lo spazio bianco può essere rimosso usando la funzione isWhitespace da Character Class.

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);
}

Per rimuovere spazi nel tuo esempio, questo è un altro modo per farlo:

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

Ciò che fa è convertirlo in un array con gli spazi che sono i separatori, e quindi combina insieme gli elementi nell'array senza gli spazi.

Funziona abbastanza bene ed è facile da capire.


Puoi farlo così semplicemente da

String newMysz = mysz.replace(" ","");

Se devi rimuovere anche gli spazi non infrangibili, puoi aggiornare il tuo codice in questo modo:

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

Separare ciascun gruppo di testo nella propria sottostringa e quindi concatenare tali sottostringhe. 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);  
    } 

Un modo per gestire le manipolazioni di String è StringUtils dai comuni di Apache.

String withoutWhitespace = StringUtils.deleteWhitespace(whitespaces);

Puoi trovarlo here . commons-lang include molto di più ed è ben supportato.


Usando Pattern And Matcher è più dinamico.

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);    
    }
}

Utilizzare la classe di utilizzo della stringa apache è meglio per evitare NullPointerException

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

Produzione

abcdef


st.replaceAll("\\s+","") rimuove tutti gli spazi bianchi e i caratteri non visibili (ad es., tab, \n ).

st.replaceAll("\\s+","") e st.replaceAll("\\s","") producono lo stesso risultato.

La seconda regex è del 20% più veloce della prima, ma man mano che aumenta il numero di spazi consecutivi, il primo si comporta meglio del secondo.

Assegna il valore a una variabile, se non utilizzato direttamente:

st = st.replaceAll("\\s+","")

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);
    }
}

mysz = mysz.replace(" ","");

Prima con lo spazio, il secondo senza spazio.

Quindi è fatto.


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

replaceAll("\\s","")

\w = Qualcosa che è un carattere di parola

\W = Tutto ciò che non è un carattere di parola (compresi i segni di punteggiatura, ecc.)

\s = Tutto ciò che è un carattere di spazio (incluso spazio, caratteri di tabulazione, ecc.)

\S = Tutto ciò che non è un carattere di spazio (incluse sia lettere che numeri, oltre alla punteggiatura, ecc.)

(Modifica: come indicato, devi uscire dal backslash se vuoi raggiungere il motore regex, risultando in \\s .)





whitespace