ho stringa come questaRimuovere caratteri di fine linea da stringa Java
"hello
java
book"
voglio rimuovere \ r \ n da stringa (ciao \ r \ njava \ r \ nBook). Voglio una stringa come "ciaojavabook". Come posso fare questo?
ho stringa come questaRimuovere caratteri di fine linea da stringa Java
"hello
java
book"
voglio rimuovere \ r \ n da stringa (ciao \ r \ njava \ r \ nBook). Voglio una stringa come "ciaojavabook". Come posso fare questo?
dato uno str String:
str = str.replaceAll("\\\\r","")
str = str.replaceAll("\\\\n","")
Hai provato a usare il metodo replaceAll per sostituire qualsiasi occorrenza di \ n \ r o con la stringa vuota?
Regex con replaceAll.
public class Main
{
public static void main(final String[] argv)
{
String str;
str = "hello\r\njava\r\nbook";
str = str.replaceAll("(\\r|\\n)", "");
System.out.println(str);
}
}
Se si desidera rimuovere \ r \ n quando sono le coppie (il codice di cui sopra libera in \ r \ n) do questo, invece:
str = str.replaceAll("\\r\\n", "");
Si consiglia di utilizzare 'System.getProperty (" line.separator ");', anziché gli interruttori di linea hardcoded. Ogni sistema operativo ha il proprio separatore di riga. – GGrec
Anche io, ma la domanda utilizzava in modo specifico \ r e \ n ... – TofuBeer
@GGrec a volte il testo String/File non è stato creato dallo stesso sistema operativo. Quindi 'System.getProperty (" line.separator ");' non funzionerà in questi casi. Ma sì, se puoi fidarti dell'origine dello stesso OS, è meglio usare la proprietà di sistema. – Mindwin
Se si vuole evitare il regex, o devono indirizzare una precedente JVM, String.replace() farà:
str=str.replace("\r","").replace("\n","");
e per rimuovere una coppia CRLF:
str=str.replace("\r\n","");
Quest'ultimo è più efficiente della costruzione di un'espressione regolare per fare la stessa cosa. Ma penso che il primo sarà più veloce come regex poiché la stringa viene analizzata solo una volta.
static byte[] discardWhitespace(byte[] data) {
byte groomedData[] = new byte[data.length];
int bytesCopied = 0;
for (int i = 0; i < data.length; i++) {
switch (data[i]) {
case (byte) '\n' :
case (byte) '\r' :
break;
default:
groomedData[bytesCopied++] = data[i];
}
}
byte packedData[] = new byte[bytesCopied];
System.arraycopy(groomedData, 0, packedData, 0, bytesCopied);
return packedData;
}
Codice trovato sul progetto Commons-codec.
Hai provato
string.trim();
Questo è lo scopo di tagliare tutti i leader e appoggia mentre gli spazi nella stringa. Spero che questo ti aiuti.
Edit: (I non era abbastanza esplicito)
Così, quando si String.split(), si avrà una string [] - per ciascuna delle stringhe nella matrice, fare uno string.trim () e quindi aggiungerlo.
String[] tokens = yourString.split(" ");
StringBuffer buff = new StringBuffer();
for (String token : tokens)
{
buff.append(token.trim());
}
Utilizzare stringBuffer/Builder invece di accodare nella stessa stringa.
Qual è il problema qui? Trim elimina tutto e restituisce solo la stringa? –
Trim rimuove gli spazi bianchi iniziali/finali. Le interruzioni di riga nel mezzo di una stringa non verranno rimosse. – Joseph
public static void main(final String[] argv)
{
String str;
str = "hello\r\n\tjava\r\nbook";
str = str.replaceAll("(\\r|\\n|\\t)", "");
System.out.println(str);
}
Sarebbe utile aggiungere anche la tabulazione in regex.
Zounds. Bastonatemi! –
Questo è un modo inutilmente inefficiente di farlo. –