Je chaîne comme ceRetirez caractères de fin de ligne de Java chaîne
"hello
java
book"
Je veux supprimer \ r \ n de chaîne (bonjour \ r \ Njava \ r \ nBook). Je veux une chaîne comme "hellojavabook". Comment puis-je faire ceci?
Je chaîne comme ceRetirez caractères de fin de ligne de Java chaîne
"hello
java
book"
Je veux supprimer \ r \ n de chaîne (bonjour \ r \ Njava \ r \ nBook). Je veux une chaîne comme "hellojavabook". Comment puis-je faire ceci?
d'une chaîne str:
str = str.replaceAll("\\\\r","")
str = str.replaceAll("\\\\n","")
Avez-vous essayé d'utiliser la méthode replaceAll pour remplacer toutes les occurrences de \ n ou \ r avec le chaîne vide?
Regex avec remplacerAll.
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);
}
}
Si vous voulez seulement supprimer \ r \ n quand ils sont des paires (le code ci-dessus supprime soit \ r ou \ n) font place:
str = str.replaceAll("\\r\\n", "");
Je vous recommande d'utiliser 'System.getProperty (" line.separator ");', au lieu de sauts de ligne codés en dur. Chaque système d'exploitation possède son propre séparateur de ligne. – GGrec
Moi aussi, mais la question spécifiquement utilisé le \ r et \ n ... – TofuBeer
@GGrec parfois le texte String/File n'a pas été faite par le même système d'exploitation. Donc 'System.getProperty (" line.separator ");' ne fonctionnera pas dans ces cas. Mais oui, si vous pouvez faire confiance à la même origine, il est préférable d'utiliser la propriété système. – Mindwin
Si vous voulez éviter la regex ou doit cibler une machine virtuelle Java plus tôt, String.replace() le fera:
str=str.replace("\r","").replace("\n","");
et pour enlever une paire CRLF:
str=str.replace("\r\n","");
Ce dernier est plus efficace que la construction d'une regex pour faire la même chose. Mais je pense que le premier sera plus rapide comme regex puisque la chaîne n'est analysée qu'une fois.
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;
}
Code trouvé sur le projet commons-codec.
Avez-vous essayé
string.trim();
Ceci est destiné à couper tous les principaux et se penchant tandis que les espaces dans la chaîne. J'espère que cela t'aides.
Edit: (je n'étais pas assez explicite)
Donc, quand vous string.split(), vous aurez une chaîne [] - pour chacune des chaînes du tableau, faites une string.trim () et ensuite l'ajouter.
String[] tokens = yourString.split(" ");
StringBuffer buff = new StringBuffer();
for (String token : tokens)
{
buff.append(token.trim());
}
Utilisez StringBuffer/Builder au lieu d'ajouter dans la même chaîne.
Quel est le problème ici? Trim enlève tout et rend juste la ficelle? –
Trim supprime les espaces avant/arrière. Les sauts de ligne au milieu d'une chaîne ne seront pas supprimés. – 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);
}
Il serait utile d'ajouter également la tabulation dans regex.
Zounds. Battez-moi! –
C'est une manière inutilement inefficace de le faire. –