Question

Comment puis-je réduire les espaces intérieurs en ne laissant qu'un seul espace en tenant compte des performances?

Input:
     AA     BB
Output:
AA BB

Input:
A      A
Output:
A A
Était-ce utile?

La solution

System.out.println("     AA     BB".replaceAll("\\s+", " ").trim());

Sortie:

AA BB

Remarque: contrairement à certaines des solutions proposées ici, cela remplace également un seul onglet par un seul espace. Si vous ne disposez d'aucun onglet, vous pouvez utiliser " {2,} " au lieu de cela qui sera encore plus rapide:

System.out.println("     AA     BB".replaceAll(" {2,}", " ").trim());

Autres conseils

Remplacez deux espaces ou plus " \\ s {2,} " par un seul espace " " et effectuez ensuite un trim () pour supprimer les espaces de début et de fin, comme indiqué dans le premier exemple.

output = input.replaceAll("\\s{2,}", " ").trim();
s = s.replaceAll("\\s+", " " ).trim();

"Hello a a g g a   gag gs    gs@".replaceAll( "[ ]+{2}", " ") ).trim();

Il existe des réponses correctes ici, par exemple:

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

Mais je pense qu'il est également important de choisir la bonne question. Au lieu de demander de couper une Chaîne à l'aide d'expressions régulières, pourquoi ne pas simplement demander de couper le Chaîne et permettre aux personnes qui répondent de vous montrer la meilleure stratégie?

Il existe peut-être de meilleures façons de réduire les espaces que d’utiliser une expression régulière. Il existe certainement d'autres moyens.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top