10
votes

Ruby String à octal?

Comment puis-je convertir "755" à 0755 dans Ruby? Je veux transmettre des autorisations à une méthode à l'aide d'une chaîne, puis convertissez-la pour une utilisation CHMOD.


4 commentaires

Ce n'est pas clair ce que vous voulez réellement. Voulez-vous ajouter zéro à une chaîne? Ou quoi?


Je veux convertir une chaîne en une octale, comme le titre dit le titre.


@Pavel: "755" == 0755 retourne false ...


Non ce n'est pas. C'est une corde. Il veut le convertir en un entier à la base 8. La question est parfaitement claire.


3 Réponses :


16
votes

Cela devrait le faire:

"755".to_i(8)
# => 493

"755".to_i(8) == 0755
# => true


2 commentaires

Fantastique, a fait ce test en IRB et a eu "vrai" -> 0755 == "755" .to_i (8)


Je viens d'ajouter que à ma réponse, alors les gens comprennent ce que c'est pour.



-4
votes
def append_zero_to_string(string)
    0.to_s + string
end 

1 commentaires

Il attend pas une chaîne. Tandis que "755" est une chaîne, 0755 n'est pas une chaîne.



0
votes

Un peu en retard à la fête, mais vous pouvez vérifier les erreurs de saisie en passant la chaîne et la base pour instancier un entier ainsi,

Integer("755",8)=493
Integer("855",8)
ArgumentError: invalid value for Integer(): "855"

begin
     Integer("855",8)
rescue ArgumentError, TypeError
     "Bad input"
end


0 commentaires