Comment supprimer les sauts de ligne du texte
Collez le texte dans la boîte à outils de texte. Si vous souhaitez un bloc continu, passez la recherche et le remplacement en mode Regex, recherchez \s*\n\s* et remplacez-le par un seul espace.
Si vous souhaitez conserver les sauts de paragraphe, utilisez d'abord Couper les lignes, puis recherchez (?<!\n)\n(?!\n) et remplacez-le par un espace. Ce modèle correspond à une nouvelle ligne qui n'a pas de nouvelle ligne de chaque côté (c'est-à-dire un retour à la ligne au milieu d'un paragraphe) et laisse seules les doubles nouvelles lignes entre les paragraphes.
Pourquoi le texte arrive avec des sauts de ligne durs
La copie d'un PDF est la source habituelle. Un PDF ne contient pas de paragraphes (il contient du texte positionné sur une page), donc la copie insère une nouvelle ligne là où se termine une ligne visuelle. Un paragraphe qui occupait six lignes sur la page arrive sous forme de six lignes de texte.
Le courrier électronique en texte brut est l’autre source courante. Les anciens clients de messagerie encapsulaient les messages sortants de 72 ou 76 caractères, et les réponses citées préservaient ces pauses indéfiniment.
La particularité est que les sauts se situent au milieu de la phrase, à peu près dans la même colonne, plutôt qu'à la fin de la phrase. C'est ce qui les rend mécaniquement amovibles : les véritables sauts de paragraphe sont séparés par une ligne VIDE, et les retours à la ligne au milieu du paragraphe ne le sont pas. Tout ce qui suit repose sur cette différence.
Conserver les paragraphes : la méthode du modèle unique
Le modèle se lit comme suit : une nouvelle ligne qui n'est ni précédée d'une nouvelle ligne ni suivie d'une nouvelle ligne. Un retour à la ligne au milieu du paragraphe correspond ; chaque nouvelle ligne dans une double rupture a une nouvelle ligne d'un côté, donc aucune ne correspond.
Si l'outil rejette le modèle avec une erreur, votre navigateur ne prend pas en charge le lookbehind. Dans ce cas, utilisez le remplacement plus simple \s*\n\s* pour tout joindre et réintroduisez les sauts de paragraphe dans tout ce dans lequel vous collez le texte.
- Appuyez sur Couper les lignes. Cela supprime les espaces de début et de fin de chaque ligne, de sorte qu'un séparateur de paragraphe devient exactement deux nouvelles lignes plutôt qu'une nouvelle ligne, un espace parasite et une autre nouvelle ligne.
- Cochez Regex.
- Recherchez (?<!\n)\n(?!\n) et remplacez-le par un seul espace. Appuyez sur Remplacer tout.
- Vérifiez le décompte. Il doit correspondre à peu près au nombre de lignes renvoyées à la ligne et doit être inférieur au nombre total de lignes d'environ le nombre de paragraphes.
Regrouper tout en un seul bloc
Pour une citation, une requête de recherche ou tout ce qui entre dans un seul champ, vous n'avez pas du tout besoin de protéger les paragraphes.
Mode Regex, recherchez \s*\n\s* et remplacez-le par un seul espace. Le \s* des deux côtés absorbe l'indentation et les espaces de fin en même temps, vous n'avez donc pas besoin d'un nettoyage séparé à double espace par la suite.
Fins de lignes Windows et autres problèmes
- Si un remplacement sur \n renvoie zéro ou laisse des caractères parasites, le texte a des fins de ligne Windows. Recherchez \r et remplacez-le par rien en premier ; qui convertit CRLF en LF et les modèles ci-dessus se comportent alors.
- Les mots avec trait d'union répartis sur plusieurs lignes — « inter- » puis « national » — deviennent « international » après l'adhésion. Recherchez "-" et remplacez-le par rien, mais lisez d'abord le décompte, car ce modèle correspond également aux tirets légitimes en prose.
- Les doubles espaces peuvent survivre si une ligne se termine par un espace et que vous utilisez le modèle lookbehind. Trouvez deux espaces, remplacez-les par un et exécutez-le deux fois.
- Le texte sans lignes vides entre les paragraphes n’a aucun signal à protéger. Aucun modèle ne peut récupérer une limite de paragraphe qui n'a jamais été encodée, et vous devrez les réinsérer manuellement.
Deux choses à propos du mode regex de cet outil
Les modèles sont compilés à l’intérieur d’une garde. Un modèle non valide vous donne un message d'erreur et laisse votre texte exactement tel qu'il était : une parenthèse ouverte seule est un état intermédiaire normal lors de la saisie, et elle ne devrait pas détruire votre travail.
Les modèles sont compilés avec l'indicateur global et sans les indicateurs multilignes ou dotall. Un remplacement s'applique donc toujours partout ; le point ne correspond pas à une nouvelle ligne ; et ^ et $ ancrent l'ensemble du texte plutôt que chaque ligne. Pour agir par ligne, faites correspondre explicitement la nouvelle ligne, ce que font les modèles ci-dessus.
Les champs Rechercher et Remplacer sont des entrées sur une seule ligne. Vous pouvez faire correspondre une nouvelle ligne avec \n, mais vous ne pouvez pas en INSÉRER une : un \n tapé dans le champ de remplacement est inséré sous la forme d'une barre oblique inverse suivie d'un n. C'est pourquoi la méthode ci-dessus n'a jamais besoin de remettre une nouvelle ligne.
Exemple concret : deux paragraphes copiés à partir d'un PDF
Le texte collé comporte une coupure nette après chaque ligne imprimée et une ligne vierge entre les deux paragraphes. En utilisant / pour une nouvelle ligne, cela ressemble à ceci :
"Le comité s'est réuni mardi pour examiner la / proposition soumise en mars. Plusieurs membres / ont fait part de leurs inquiétudes sur le calendrier. / / Une version révisée sera diffusée avant / la prochaine réunion."
Il y a cinq nouvelles lignes au total : quatre retours à la ligne et un saut de paragraphe écrits sous forme de deux nouvelles lignes consécutives. Quatre des cinq devraient partir.
- Appuyez sur Couper les lignes.
- Cochez Regex, recherchez (?<!\n)\n(?!\n), remplacez par un espace, remplacez tout.
- Lisez le décompte rapporté.
Résultat : L'outil signale 3 remplacements - les trois retours à la ligne au milieu du paragraphe - et le résultat est deux paragraphes, chacun sur une ligne continue, toujours séparés par une ligne vide. Utiliser \s*\n\s* à la place aurait rapporté 4 et fusionné les deux paragraphes en un seul, ce qui est la bonne réponse pour une citation et la mauvaise ici.
Ouvrez l'outil
Nettoyer le texte dans la boîte à outils de texte
Recherche et remplacement littéraux et regex avec un historique d'annulation et un nombre de remplacements après chaque étape. Rien de ce que vous collez n’est envoyé nulle part.
Ce que cela ne couvre pas
- Il s'agit d'une recherche et d'un remplacement, pas d'une redistribution. Il ne peut pas distinguer un retour à la ligne au milieu d'une phrase d'une ligne délibérément courte telle qu'un bloc d'adresse, un verset ou une liste à puces.
- Le champ de remplacement ne peut pas insérer de nouvelle ligne, donc toute technique nécessitant de remettre des sauts de ligne doit se terminer ailleurs.
- Le modèle lookbehind nécessite un navigateur qui prend en charge les assertions lookbehind. Un navigateur plus ancien signale une erreur de modèle non valide plutôt que d'échouer silencieusement.
- Le traitement s'exécute sur le thread principal, donc un document très volumineux peut suspendre brièvement l'interface lors d'une transformation.
- L'annulation est limitée aux 50 dernières opérations.
- Rien n'est enregistré entre les visites. Le rechargement de la page supprime votre travail, de par sa conception.