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  [ 14 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Aus Text einige Zeilen löschen
BeitragVerfasst: 06 Sep 2010, 20:18 
Offline
Novize

Registriert: 06 Sep 2010, 19:51
Beiträge: 10
Hallo,

ich habe einen Text in einer String-Variablen ( a ).
einen anderen Text habe ich in einer anderen String-Variable ( b ).

Nun möchte ich die zeilen, die in a und b vorhanden sind, aus a löschen.

also wenn a den inhalt hat:

1234
abcd
4567
ttg

und b den inhalt hat

4567
1234


dann soll übrig bleiben:

abcd
ttg



Da ich recht neu in Ruby bin und versuche, es auf diese Art zu lernen, würde ich mich über Hilfe freuen.
Leider hab ich es trotz unzähliger versuche nicht geschafft :(


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Aus Text einige Zeilen löschen
BeitragVerfasst: 06 Sep 2010, 20:36 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe


1
2
3
4
5
6
7
8
9
10
11
12
13
a = <<TEXTA
1234
abcd
4567
ttg

TEXTA


b = <<TEXTB
4567
1234

TEXTB


puts (a.split("\n")-b.split("\n")).join("\n")
...gibt...

1
2
abcd
ttg

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Aus Text einige Zeilen löschen
BeitragVerfasst: 06 Sep 2010, 20:40 
Offline
Lehrling

Registriert: 25 Mai 2009, 12:48
Beiträge: 91
Wohnort: Berlin
Hallo hujiko,


( a.split("\n") - b.split("\n") ).join("\n")

Ich weiß, du denkst jetzt bestimmt: "Soviel Code ist dafür notwendig?". Natürlich geht es noch kürzer


$;=$/;(a.split-b.split)*$/
powered by Good Code Ruined

edit mist, mal wieder zu langsam :twisted:

_________________
fresh / irbtools / ripltools / github / J-_-L


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Aus Text einige Zeilen löschen
BeitragVerfasst: 06 Sep 2010, 20:45 
Offline
Novize

Registriert: 06 Sep 2010, 19:51
Beiträge: 10
Wow, danke :D
Ich werde das gleich mal ausprobieren :)

Ich bin umsteiger von PHP und etwas C++
ich hab schon gelernt, dass man vieles sehr kurz schreiben kann, aber das ist ja echt klasse
Ich bin total begeistert :D

DEn Code aus der ertsen Antwort verstehe ich problemlos.
Aber kannst du mir den aus der 2. Antwort nochmal erklären?
Das ist mir dann doch zu komplex :P

Beste grüße und tausend dank,
ich werde bestimmt noch öfter kommen :)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Aus Text einige Zeilen löschen
BeitragVerfasst: 06 Sep 2010, 21:00 
Offline
Lehrling

Registriert: 25 Mai 2009, 12:48
Beiträge: 91
Wohnort: Berlin
Das zweite Beispiel ist natürlich nicht zum nachmachen. Es offenbahrt, das Ruby auch Perl-Wurzeln hat (die matz später bereut hat xD).

Im Prinzip macht es das Gleiche wie Antwort 1.

$/ ist eine globale Variable, die den Standard-Zeilentrenner enthält: "\n". Dieser wird z.B. verwendet, damit gets erkennen kann, was eine Zeile ist. Ich hab ihn hier nur verwenden, weil er 1-2 Zeichen kürzer ist, als den Zeilenumbruch direkt hinzuschreiben.

$; ist auch eine spezielle globale Variable, auf welche sich split bezieht, wenn es ohne Argument aufgerufen wird.

Auch wenn ich Gefahr laufe, mich zu wiederholen: Kein vernünftiger Ruby-Programmierer verwendet soetwas ;)

Ach, und * ist für Strings ein Alias für join.

_________________
fresh / irbtools / ripltools / github / J-_-L


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Aus Text einige Zeilen löschen
BeitragVerfasst: 07 Sep 2010, 01:06 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
J-_-L hat geschrieben:
die matz später bereut hat

Ehrlich?

EDIT: Diese Kürzel mag zwar nicht jeder (ich finde sie in der Masse auch eher unpraktisch), aber Ruby eignet sich durch die Kürze der Ausdrucksmöglichkeiten doch wunderbar für WUOTA-Programme (Write and Use Once and Throw Away), also 3/4/5-Zeiler, die man immer wieder mal braucht - dass man so etwas in umfangreichen oder langfristig benutzten Programmen nicht machen sollte, versteht sich von selbst.

Abgesehen von den Kürzeln bietet Ruby wegen seiner kurzen Formulierungsmöglichkeiten noch den Vorteil, dass man viel mehr Code auf einen Blick überschauen kann. Wenn man die Sprache erst einmal wirklich kennt, einen Überblick über die Klassen hat und eine Klassendokumentation zur Verfügung hat, sind kurze Programme klarer und aussagekräftiger als Seitenlange Programmierprosa mit Kommentaren - man stelle sich vergleichsweise nur mal vor, man würde in der Mathematik die formal übersichtlichen und einfachen Konvergenzkriterien der Basis-Analysis in deutscher Sprache ohne Kürzel zu schreiben. Das ist schlicht und einfach unverständlich.

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Aus Text einige Zeilen löschen
BeitragVerfasst: 07 Sep 2010, 17:04 
Offline
Lehrling

Registriert: 25 Mai 2009, 12:48
Beiträge: 91
Wohnort: Berlin
Ja, ich stimme dir in vielerlei hinsicht zu, und mag diese Kürzel eigentlich auch. Ohne Frage sind sie aber verwirrend für Einsteiger, deshalb hab ich gleich gegengesteuert.

Und gerade die 1. Lösung für das Thread-Problem ist sowohl gut lesbar und verständlich, als auch wunderbar kurz :o

Achso, zu matz nochmal etwas klarstellender: er bereute nicht, Perl-Wurzeln zu haben, sondern allein diese 2-zeichigen globalen Variablen. Hier das Zitat:
http://linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html hat geschrieben:
Stewart: I gather you had worked with both Perl and Python before creating Ruby. What bits of Perl did you incorporate in Ruby?

Matz: A lot. Ruby's class library is an object-oriented reorganization of Perl functionality--plus some Smalltalk and Lisp stuff. I used too much I guess. I shouldn't have inherited $_, $&, and the other, ugly style variables.

_________________
fresh / irbtools / ripltools / github / J-_-L


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Aus Text einige Zeilen löschen
BeitragVerfasst: 07 Sep 2010, 17:13 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
J-_-L hat geschrieben:
Achso, zu matz nochmal etwas klarstellender: er bereute nicht, Perl-Wurzeln zu haben, sondern allein diese 2-zeichigen globalen Variablen.

Es sind einfach zu viele. Wenn es nur eine Handvoll derartiger Kürzel gäbe, hätte wohl niemand Probleme damit. Wenn man das nicht täglich benutzt - manche Sys-Admins mussten das ja - kann man es sich nicht merken.

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Aus Text einige Zeilen löschen
BeitragVerfasst: 07 Sep 2010, 17:21 
Offline
Interpreter
Benutzeravatar

Registriert: 03 Jul 2006, 14:53
Beiträge: 4872
Wohnort: RLP
Die Teile haben durchaus auch technische Nachteile. Zum Beispiel sind $1 und so weiter ziemlich messy, wenn es um Sichtbarkeiten geht. Die JRuby-Leute hört man da regelmässig motzen. Über die Dinger Buch zu führen, ist wohl ziemlich aufwändig. $ ist ja nicht gleich $. Naja, solange wir noch kein Periodensystem dafür brauchen.[1]

Gruß,
Skade

http://www.ozonehouse.com/mark/periodic/


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Aus Text einige Zeilen löschen
BeitragVerfasst: 07 Sep 2010, 17:47 
Offline
Lehrling

Registriert: 25 Mai 2009, 12:48
Beiträge: 91
Wohnort: Berlin
lol, hihi xD.

Warum hat Ruby kein: ^fff^ (sed flip-flop exclusive) xD

_________________
fresh / irbtools / ripltools / github / J-_-L


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Aus Text einige Zeilen löschen
BeitragVerfasst: 07 Sep 2010, 18:24 
Offline
Interpreter
Benutzeravatar

Registriert: 03 Jul 2006, 14:53
Beiträge: 4872
Wohnort: RLP


1
2
3
if lol..hihi
puts "within a flipflop"
end


http://www.ruby-mine.de/2009/9/21/syntax-sommer-flip-flops

Natürlich haben wir die sed-flip-flops. Die awk-flip-flops haben wir auch.

Gruß,
Skade


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Aus Text einige Zeilen löschen
BeitragVerfasst: 07 Sep 2010, 18:46 
Offline
Lehrling

Registriert: 25 Mai 2009, 12:48
Beiträge: 91
Wohnort: Berlin
Wusste nicht, dass das die gleichen sind °_°.

Und sehen schicker aus in Ruby.

Btw, ich versuch die immermal einzubauen, aber bisher erfolglos... Habt jemand von euch die schonmal benutzt?

_________________
fresh / irbtools / ripltools / github / J-_-L


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Aus Text einige Zeilen löschen
BeitragVerfasst: 07 Sep 2010, 21:07 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Skade hat geschrieben:

Fragt sich erst einmal, welche Elemente instabil sind und in was die zerfallen.

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Aus Text einige Zeilen löschen
BeitragVerfasst: 05 Nov 2010, 19:36 
Offline
Interpreter
Benutzeravatar

Registriert: 02 Jan 2005, 20:15
Beiträge: 1360
Was ich an den $ Variablen nicht mochte war das es einen ansonsten sauberen Code irgendwie hässlicher macht.

Es mag zwar kürzer sein, und für code golfers oder sys admins durchaus nett sein, aber sofern ich kann versuche ich die $ zu vermeiden (wobei, wenn ich sie verwenden muss, ist es auch nicht so schlimm ... das ist eher eine Präferenzsache bei mir, kein Religionskrieg)

_________________
Retired. Macht es gut!


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 14 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: