1
votes

Comment ajouter des espaces à une chaîne donnée et maintenir N caractères?

Dans Ruby en utilisant regex, je veux modifier une chaîne donnée qui sera plus courte ou exactement 15 caractères, de sorte qu'elle soit toujours 15 caractères en ajoutant des espaces.

Par exemple:

x = 'apple'

x = x + ' '*(15 - x.length)

J'ai essayé ceci et cela fonctionne, mais est-ce que regex aurait une solution plus élégante?

'apple' => 'apple(10 spaces here)'

'orange' => 'orange(9 spaces here)'

'fifteenspaceshi' => 'fifteenspaceshi'


2 commentaires

Les expressions régulières sont généralement plus lentes et entraînent un code moins lisible et peuvent facilement masquer les erreurs de logique qui vous mordent à 3 heures du matin. Bien sûr, ils sont cool, mais les développeurs expérimentés apprennent à les utiliser avec précaution, généralement à cause de ces sessions de panique de 3 heures du matin.


Si l'une des réponses vous a été utile, sélectionnez celle que vous avez trouvée la plus utile.


3 Réponses :


9
votes

Pas besoin d'impliquer l'expression régulière

"apple".ljust(15) # => "apple          "


1 commentaires

btw, ljust reçoit également un espace réservé, par exemple "pomme" .ljust (15, '_')



2
votes

Voici une autre façon d'utiliser une astuce de remplissage à gauche:

padding = "               "
input = "123" + padding
puts input.chars.first(15).join

"123            "
        ^^ 12 spaces

L'idée ici est de concaténer une chaîne contenant 15 espaces à droite de la chaîne d'entrée. Ensuite, nous conservons les 15 premiers caractères de ce résultat concaténé.


3 commentaires

Ou input [0 ... 15] au lieu de input.chars.first (15) .join


@SergioTulentsev Je suis un nouveau venu dans le vaste monde de Ruby. En fait, je suis en deçà de mon quota quotidien de points, alors je traîne partout maintenant: P


Vous voudrez peut-être abandonner l'utilisation des points-virgules de fin car ils sont rarement nécessaires et contribuent souvent à un code difficile à lire, et nous savons ce qui se passe lorsque des éléments inutiles se joignent à des éléments difficiles à lire ...



5
votes

Je pense que la réponse de Sergio est la meilleure en fonction de la complexité de la question, mais vous pouvez également utiliser le formatage de chaîne ( sprintf ) si vous avez besoin d'un formatage plus complexe plus tard:

"%-15s" % "apple" # => "apple          "


0 commentaires