2010-08-20 5 views
8

Comment faire pour convertir "755" en 0755 en Ruby? Je veux passer des autorisations à une méthode en utilisant une chaîne, puis la convertir pour l'utilisation de chmod.Chaîne de rubis à octal?

+0

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

+0

Je veux convertir une chaîne en octal, comme le dit le titre. – Christoffer

+0

@Pavel: "755" == 0755 renvoie false ... – Christoffer

Répondre

15

Cela devrait le faire:

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

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

Fantastique, a fait ce test dans irb et a obtenu" vrai "-> 0755 ==" 755 ".to_i (8) – Christoffer

+0

Juste ajouté à ma réponse afin que les gens comprennent ce que c'est. –

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

Il ne s'attend pas à une chaîne. Alors que "755" est une chaîne, 0755 n'est pas une chaîne. –

0

Un peu en retard à la fête, mais vous pouvez vérifier les erreurs d'entrée en passant la chaîne et de la base à 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 
Questions connexes