Supprimer tous les espaces de Chaîne mais garder UN saut de ligne

J'ai cette Chaîne d'entrée (contenant des onglets, des espaces, retours à la ligne ():


        That      is a test.              
    seems to work       pretty good? working.








    Another test  again.

[Edit]: je devrais avoir fourni à la Chaîne pour mieux tester comme stackoverflow supprime tous les caractères spéciaux (onglets, ...)

String testContent = "\n\t\n\t\t\t\n\t\t\tDas      ist ein Test.\t\t\t  \n\tsoweit scheint das \t\tganze zu? funktionieren.\n\n\n\n\t\t\n\t\t\n\t\t\t      \n\t\t\t      \n    \t\t\t\n    \tNoch ein  Test.\n    \t\n    \t\n    \t";

Et je veux arriver à cet état:


That is a test.
seems to work pretty good? working.
Another test again.

String expectedOutput = "Das ist ein Test.\nsoweit scheint das ganze zu? funktionieren.\nNoch ein Test.\n";

Des idées? Cela peut être réalisé en utilisant des regexes?

replaceAll("\\s+", " ") n'est PAS ce que je cherche. Si cette expression serait de conserver exactement 1 saut de ligne et de celles existantes, il serait parfait.

J'ai essayé ceci mais cela semble sous-optimaux pour moi...:

BufferedReader bufReader = new BufferedReader(new StringReader(testContent));
String line = null;
StringBuilder newString = new StringBuilder();
while ((line = bufReader.readLine()) != null) {
    String temp = line.replaceAll("\\s+", " ");
    if (!temp.trim().equals("")) {
        newString.append(temp.trim());
        newString.append("\n");
    }
}
je pense que vous devez faire un peu de logique pour que.. vous avez besoin de rechercher un caractère hors espace après le 1er de l'espace. et de recherche pour les non caractère d'espace après la nouvelle ligne..
Quelle est la logique que vous voulez? Le parage des espaces consécutifs de 1 espace?
oui cela résume tout je pense..
pas que ce n'est pas de supprimer des onglets et ne s'effondre pas tous les retours à la ligne à seul ceux

OriginalL'auteur friesoft | 2013-03-19