A propos de String et Array !

View: New views
14 Messages — Rating Filter:   Alert me  

A propos de String et Array !

by man in the hill :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Bonjour à tous !

Voilà , j'ai un nom de fichier , par ex : foo-1.0.1.tar.bz2  et j'aimerais récupérer le nom ds une variable qque soit sa longueur et l'extension ds une autre variable ...


Merci de m'aider ,


                                                        @ Bientôt.

[ruby-fr:1412] Re: A propos de String et Array !

by Guillaume "Zifro" DESRAT :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Il y a de multiple solutions, comme par exemple un split ou
l'utilisation d'une regexp.
Regarde de ce côté là ; il n'y a que toi qui puisse t'aider car toi
seul connait le format des noms de fichiers et ce que tu veux
récupérer précisément.
En l'occurrence, considères-tu que l'extension est bz2 ou tar.bz2 ? Y
aura-t-il des points dans le nom du fichier, en dehors du séparateur
nom/extension ?

On ne peut te donner que quelques pistes.

--
Guillaume "Zifro" DESRAT

[ruby-fr:1413] Re: A propos de String et Array !

by Marc Chantreux-2 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Bonjour,

un débutant tente de répondre à un débutant avec des réponses qui doivent être
fortement empreintes de mon passif perl. Il doit y avoir des solucs plus
conformes a l'esprit ruby.

'nom.plein.de.points'.scan(/(.*?)\.([^.]+$)/)
puts "#{$1} : #{$2}"

'nom.plein.de.points'.scan(/[^.]+$/)
puts "#{$`} : #{$&}"

puts /[^.]+$/.match('nom.plein.de.points').pre_match



le 23/08/2006,
man in the hill nous écrivait :
> Bonjour à tous !
>
> Voilà , j'ai un nom de fichier , par ex : foo-1.0.1.tar.bz2  et j'aimerais
> récupérer le nom ds une variable qque soit sa longueur et l'extension ds une
> autre variable ...

--
téléphone : 03.90.24.00.19
courriel  : marc.chantreux@...
---------------------------------------


[ruby-fr:1414] Re: A propos de String et Array !

by thbar :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Bonjour à tous

> En l'occurrence, considères-tu que l'extension est bz2 ou tar.bz2 ? Y
> aura-t-il des points dans le nom du fichier, en dehors du séparateur
> nom/extension ?

si on considère que l'extension de ' toto.tar.bz2' est '.bz2', alors on peut s'appuyer sur les méthodes disponibles dans la classe File pour faire le travail elle-même:

irb(main):001:0> name = 'foo-1.0.1.tar.bz2 '
=> "foo-1.0.1.tar.bz2"
irb(main):002:0> extension = File::extname(name)
=> ".bz2"
irb(main):003:0> name_without_extension = File::basename(name,extension)
=> "foo-1.0.1.tar"
irb(main):004:0>

a+!

Thibaut
--
[blog] http://www.dotnetguru2.org/tbarrere

Re: [ruby-fr:1414] Re: A propos de String et Array !

by man in the hill :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thibaut Barrère wrote:
Bonjour à tous

> En l'occurrence, considères-tu que l'extension est bz2 ou tar.bz2 ? Y
> aura-t-il des points dans le nom du fichier, en dehors du séparateur
> nom/extension ?

si on considère que l'extension de 'toto.tar.bz2' est '.bz2', alors on peut
s'appuyer sur les méthodes disponibles dans la classe File pour faire le
travail elle-même:

irb(main):001:0> name = 'foo-1.0.1.tar.bz2'
=> "foo-1.0.1.tar.bz2"
irb(main):002:0> extension = File::extname(name)
=> ".bz2"
irb(main):003:0> name_without_extension = File::basename(name,extension)
=> "foo-1.0.1.tar"
irb(main):004:0>

a+!

Thibaut
--
[blog] http://www.dotnetguru2.org/tbarrere
Merci Thibaut ! Ruby c'est quand même extraordinaire avec toutes ces methodes qui te font le boulot avec simplicité ! J'ai encore beaucoup de choses à apprendre !!!!


Merci à tous de m'avoir répondu !

                                                     @ Bientôt.

Re: [ruby-fr:1414] Re: A propos de String et Array !

by man in the hill :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thibaut Barrère wrote:
Bonjour à tous

> En l'occurrence, considères-tu que l'extension est bz2 ou tar.bz2 ? Y
> aura-t-il des points dans le nom du fichier, en dehors du séparateur
> nom/extension ?

si on considère que l'extension de 'toto.tar.bz2' est '.bz2', alors on peut
s'appuyer sur les méthodes disponibles dans la classe File pour faire le
travail elle-même:

irb(main):001:0> name = 'foo-1.0.1.tar.bz2'
=> "foo-1.0.1.tar.bz2"
irb(main):002:0> extension = File::extname(name)
=> ".bz2"
irb(main):003:0> name_without_extension = File::basename(name,extension)
=> "foo-1.0.1.tar"
irb(main):004:0>

a+!

Thibaut
--
[blog] http://www.dotnetguru2.org/tbarrere
salut Thibaut,

J'ai vu que tu as rajouté ::  entre la classe et la methode , peut-on faire de même avec les objets et les méthodes ... Sinon cela fonctionne vraiment bien ce que tu as posté ci-dessus !!!!


                                                        @ Bientôt.

[ruby-fr:1422] Re: A propos de String et Array !

by Guillaume "Zifro" DESRAT :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

> J'ai vu que tu as rajouté ::  entre la classe et la methode , peut-on faire
> de même avec les objets et les méthodes ...

Oui, la preuve :

irb(main):001:0> class A
irb(main):002:1> def say
irb(main):003:2> "coucou !"
irb(main):004:2> end
irb(main):005:1> end
=> nil
irb(main):006:0> a = A::new
=> #<A:0x2c215c0>
irb(main):007:0> a.say
=> "coucou !"
irb(main):008:0> a::say
=> "coucou !"
irb(main):009:0>


--
Guillaume "Zifro" DESRAT
раздираш отчаяно !

Re: [ruby-fr:1422] Re: A propos de String et Array !

by man in the hill :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Guillaume "Zifro" DESRAT wrote:
> J'ai vu que tu as rajouté ::  entre la classe et la methode , peut-on faire
> de même avec les objets et les méthodes ...

Oui, la preuve :

irb(main):001:0> class A
irb(main):002:1> def say
irb(main):003:2> "coucou !"
irb(main):004:2> end
irb(main):005:1> end
=> nil
irb(main):006:0> a = A::new
=> #<A:0x2c215c0>
irb(main):007:0> a.say
=> "coucou !"
irb(main):008:0> a::say
=> "coucou !"
irb(main):009:0>


--
Guillaume "Zifro" DESRAT
раздираш отчаяно !

Merci  Zifro , très didactique l'exemple !

                                                   
                                                       @ +

[ruby-fr:1424] Re: A propos de String et Array !

by Simon Arnaud :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Je voudrais juste préciser une ou deux petites choses.

Dans le cas de Filename::basename, nous avons une méthode de classe, et
dans l'exemple de Zifro (a::say), nous avons une méthode d'instance.

Pour le '.' et '::', de ce que je sais, partout où le '.' est utilisé
pour accéder à une méthode, il peut être remplacer par "::".

De ce que j'ai vu dans des codes ruby, ils sont souvent utilisés de la
façon suivante :

Module::méthode

Classe::méthode

Objet.méthode

Il faut aussi noter que "::" permet d'accéder à des constantes d'un
module, et que le '.' ne peut pas y être utilisé.

Module::Constante

Module::MaClasse

Mais pas :

Module.Constante

Module.MaClasse

Les deux dernières notations généreront une erreur qui ressemble à :

>Module Test
>  Constante = "Coucou"
>end
>
>puts Test::Constante
>puts Test.Constante

Coucou
undefined method `Constante' for Test:Module (NoMethodError)

Simon Arnaud
aka Maz


[ruby-fr:1425] Re: A propos de String et Array !

by Guillaume "Zifro" DESRAT :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Merci pour ces précisions Maz.
On dit aussi que "::" sert à accéder à un espace de nommage,
typiquement un module que l'on a requis (require "YAIB") sans inclure
(include YAIB).
Pourquoi ?
Parce que les modules sont des instances de la classe Module, et ne
définissent pas, par défaut, des accesseurs pour les constantes.
Mais on peut très bien faire <module>.<méthode>...

Donc, dans le cas où l'on lit YAIB::connect, on ne peut savoir si l'on
accède à la méthode connect de la classe YAIB ou bien du module YAIB.
Attention donc...



--
Guillaume "Zifro" DESRAT
раздираш отчаяно !

[ruby-fr:1426] Re: A propos de String et Array !

by Alexis Bernard :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

J'ajoute mon grain de sel sur l'opérateur de résolution portée pr
résoudre les conflits de nom ;-)

CONSTANTE = 'Hello'

module Test1
    CONSTANTE = ' World'

    def self.print
        puts ::CONSTANTE + CONSTANTE
    end
end

Test1::print


2006/8/25, Guillaume Zifro DESRAT <guillaume.desrat@...>:

> Merci pour ces précisions Maz.
> On dit aussi que "::" sert à accéder à un espace de nommage,
> typiquement un module que l'on a requis (require "YAIB") sans inclure
> (include YAIB).
> Pourquoi ?
> Parce que les modules sont des instances de la classe Module, et ne
> définissent pas, par défaut, des accesseurs pour les constantes.
> Mais on peut très bien faire <module>.<méthode>...
>
> Donc, dans le cas où l'on lit YAIB::connect, on ne peut savoir si l'on
> accède à la méthode connect de la classe YAIB ou bien du module YAIB.
> Attention donc...
>
>
>
> --
> Guillaume "Zifro" DESRAT
> раздираш отчаяно !
>

Re: [ruby-fr:1424] Re: A propos de String et Array !

by man in the hill :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Simon Arnaud wrote:
Je voudrais juste préciser une ou deux petites choses.

Dans le cas de Filename::basename, nous avons une méthode de classe, et
dans l'exemple de Zifro (a::say), nous avons une méthode d'instance.

Pour le '.' et '::', de ce que je sais, partout où le '.' est utilisé
pour accéder à une méthode, il peut être remplacer par "::".

De ce que j'ai vu dans des codes ruby, ils sont souvent utilisés de la
façon suivante :

Module::méthode

Classe::méthode

Objet.méthode

Il faut aussi noter que "::" permet d'accéder à des constantes d'un
module, et que le '.' ne peut pas y être utilisé.

Module::Constante

Module::MaClasse

Mais pas :

Module.Constante

Module.MaClasse

Les deux dernières notations généreront une erreur qui ressemble à :

>Module Test
>  Constante = "Coucou"
>end
>
>puts Test::Constante
>puts Test.Constante

Coucou
undefined method `Constante' for Test:Module (NoMethodError)

Simon Arnaud
aka Maz
Bonjour,

j'avoue que c'est loin d'être aussi claire dans mon esprit et que cette petite discussion est plûtot enrichissante !


Merci à tous !


                                                                 @ Bientôt.

[ruby-fr:1429] Re: A propos de String et Array !

by Guillaume "Zifro" DESRAT :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

C'est enrichissant Ruby.
Regarde DHH avec Rails, il gagne de l'argent !

Quoiqu'il en soit, euh... non, je ne vois rien à ajouter.

(désolé, Vendredi, fatigué, tout ça...)

--
Guillaume "Zifro" DESRAT
раздираш отчаяно !

[ruby-fr:1433] Re: A propos de String et Array !

by Mathieu Bouchard :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Fri, 25 Aug 2006, Simon Arnaud wrote:

> Mais pas :
> Module.Constante
> Module.MaClasse

ça se corrige...

class Module
   def method_missing(sel,*args)
     if "A".."Z"===sel.to_s[0] then const_get(sel) else super end
   end
end

avec ça on peut utiliser le . pour séparer des constantes.

  _ _ __ ___ _____ ________ _____________ _____________________ ...
| Mathieu Bouchard - tél:+1.514.383.3801 - http://artengine.ca/matju
| Freelance Digital Arts Engineer, Montréal QC Canada