ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: grep für Dummies
BeitragVerfasst: 28 Sep 2010, 19:08 
Offline
Nuby

Registriert: 28 Sep 2010, 19:01
Beiträge: 2
Tacherstmal,

bräuchte mal ein wenig Denkhilfe …


1
2
3
4
5
6
7
8
name = "peter"
text = "peter und der wolf"

text.grep(/peter/)
=> ["peter und der wolf"]

text.grep(name)
=> []

Warum?
Oder. Wie mach ich's besser?

Dank vorab


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: grep für Dummies
BeitragVerfasst: 28 Sep 2010, 19:13 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
:?: :?: :?:
Was willst Du denn als Ergebnis haben?

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: grep für Dummies
BeitragVerfasst: 28 Sep 2010, 19:16 
Offline
Nuby

Registriert: 28 Sep 2010, 19:01
Beiträge: 2
Ergebnis?

text.grep(name)
=> ["peter und der wolf"]


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: grep für Dummies
BeitragVerfasst: 28 Sep 2010, 19:19 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
Enumerable#grep greift dir das Element aus einem Enumerable, für das gilt


parm === item
, wobei Regexp#=== nahezu dasselbe ist wie Regexp#=~. Ein Enumerable wird hauptsächlich über seine #each-Methode ausgemacht, und in Ruby 1.8 ist #each für String dasselbe wie #each_line. Daher:

1
2
3
4
5
6
7
irb(main):001:0> str = "abc\npeter und der wolf\ndef"
=> "abc\npeter und der wolf\ndef"
irb(main):002:0> str.grep(/peter/)
=> ["peter und der wolf\n"]
irb(main):003:0> str.grep("abc\n")
=> ["abc\n"]
irb(main):004:0>
In Ruby 1.9 ist String nicht mehr Enumerable und daher kennt es auch kein grep.

Vale,
Quintus

EDIT: Falls wichtig:

1
2
3
irb(main):011:0> RUBY_DESCRIPTION
=> "ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]"
irb(main):012:0>

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: grep für Dummies
BeitragVerfasst: 28 Sep 2010, 19:35 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Quintus hat geschrieben:
In Ruby 1.9 ist String nicht mehr Enumerable und daher kennt es auch kein grep.

Du musst dort halt sagen, was Du benutzen willst...

1
2
3
4
irb(main):001:0> str = "nur peter\npeter und der wolf\nnix mit peter"
=> "nur peter\npeter und der wolf\nnix mit peter"
irb(main):002:0> str.enum_for(:each_line).grep(/peter/)
=> ["nur peter\n", "peter und der wolf\n", "nix mit peter"]

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: grep für Dummies
BeitragVerfasst: 29 Sep 2010, 10:17 
Offline
Rubyist
Benutzeravatar

Registriert: 04 Jun 2008, 22:03
Beiträge: 394
ka ab welcher version, aber ohne block gibt each_line einen enumerator zurück
dann geht das auch so


1
2
3
4
irb(main):001:0> str = "nur peter\npeter und der wolf\nnix mit peter"
=> "nur peter\npeter und der wolf\nnix mit peter"
irb(main):002:0> str.each_line.grep(/peter/)
=> ["nur peter\n", "peter und der wolf\n", "nix mit peter"]


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: grep für Dummies
BeitragVerfasst: 29 Sep 2010, 11:11 
Offline
Interpreter
Benutzeravatar

Registriert: 03 Jul 2006, 14:53
Beiträge: 4872
Wohnort: RLP
Hanmac hat geschrieben:
ka ab welcher version, aber ohne block gibt each_line einen enumerator zurück


ab 1.8.7

Gruß,
Skade


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: