J'ai besoin de faire tamponner une ligne de texte avec un nombre varié mais grand de blancheur. Je peux comprendre une façon janky de faire une boucle et ajouter des espaces avec foo $, puis l'épissage dans le texte, mais ce n'est pas une solution élégante. P>
3 Réponses :
J'ai besoin d'un peu plus d'informations. Êtes-vous simplement ajouté à un texte ou avez-vous besoin de l'insérer?
De toute façon, un moyen facile d'obtenir la répétition est l'opérateur "X" de Perl, par exemple. P>
$s .= (" " x (20000 - length($s)))
Merci, cela fonctionne parfaitement. J'étais convaincus que Perl aurait une solution élégante pour ce faire, mais mes compétences de googling me laissent tomber (bien que j'ai trouvé ce site que vous mentionnez).
Je l'ai édité pour le rendre plus utile plus généralement. "20000" est toujours qualifié de "beaucoup" à mon avis. Désolé si quelqu'un a eu votre cas pour cela.
Personne n'a été sur mon cas et je pense que vos modifications ont un sens. J'étais juste un peu inquiet que quelqu'un qui vienne plus tard pourrait se demander pourquoi j'ai 20k dans mon code quand il n'y en a pas mentionné ailleurs. J'essaie juste de suivre l'éthique de non seulement résoudre le problème de quelqu'un, mais créer un référentiel de questions-réponses utiles pour les futurs lecteurs.
Ça marche mais c'est un peu sale. Sprintf est le moyen standard de le faire (voir la réponse de Dave Webb ci-dessous)
Utilisez l'opérateur 'X':
print ' ' x 20000;
Si vous voulez toujours que la chaîne soit une certaine longueur, vous pouvez utiliser sprintf Code>
:
Par exemple, sur PAD OUT OUT OUT $ var code> avec espace blanc de 20 000 caractères Utilisation de 20 000 caractères: P>
$var = sprintf("%-20000s",$var);
L'approche propre. Et si vous voulez les espaces avant, retirez le tableau de bord.
Vous devriez demander quelque chose comme "Comment puis-je insérer une certaine quantité de blousins à Perl / regex?" I> ...
Quel est le mot "regex" dans votre titre?
J'ai inclus REGEX dans le titre (note qu'elle a été modifiée depuis la clarté), car je suppose qu'il peut y avoir une manière hacrable de remplacer récursivement un espace avec Dites 10 espaces cinq fois pour obtenir une commande de 10000 espaces.