Der folgende Beitrag wurde am 09. 10. 2006, 11:36 Uhr von Uli veröffentlicht.
Hallo - die Regulären Ausdrücke mal wieder :-/ ...
ich habe hier folgende Aufzählung:
"01. Beschreibung, 02. Beschreibung, 03. Beschreibung"
Diesen String möchte ich mittels Regulären Ausdrücken so umformatieren, dass jeweils das letzte Komma in der Aufzählung durch ein "und" ersetzt wird.
Wunschergebnis bei drei Elementen wäre demnach:
"01. Beschreibung, 02. Beschreibung und 03. Beschreibung"
Ich habe mir dazu folgendes Suchmuster ausgedacht: liefere mir ein Komma am Ende der Aufzählung, auf dass beliebige Zeichen folgen.
Als Regulärer Ausdruck:
reg = /,(?=\.+$)/;
if (reg.test(suchstring))
suchstring = suchstring.replace(reg,' und ');
Leider erwische ich mit meinem RegExp garnix ! Wer kann mir entscheidend weiterhelfen ?
Mfg Uli
Der folgende Beitrag wurde am 09. 10. 2006, 11:54 Uhr von derletztekick veröffentlicht.
Hallo Uli,
> Wer kann mir entscheidend weiterhelfen ?
Das kann ich leider nicht aber Alternativen bieten wie zB:
var str = "01. Beschreibung, 02. Beschreibung, 03. Beschreibung";
str = str.substring(0, str.lastIndexOf(",")) + " und" + str.substring(str.lastIndexOf(",")+1, str.length);
Mit freundlichem Gruß
Micha
--
LeagueEditor JavaScript kostenlose Ligaverwaltung || richtig Messen will gelernt sein
Der folgende Beitrag wurde am 09. 10. 2006, 12:27 Uhr von Uli veröffentlicht.
Herzlichen Dank auf jeden Fall - Alternativen verfolge ich auch immer gerne - obwohl Reguläre Ausdrücke doch recht kompakt und "elegant"
- aber entsprechend schwierig - sind.
Mfg Uli
Der folgende Beitrag wurde am 09. 10. 2006, 12:18 Uhr von Skeeve veröffentlicht.
Moin!
s/\s*,\s*(?=[^,]+$)/ und /;
Ersetzt das letzte Komma einschließlich umgebendem Whitespace durch " und ". (?=[^,]+$) ist ein look-ahead der besagt, daß kein bis zum Ende kein Komma auftreten darf.
-- Skeeve
Der folgende Beitrag wurde am 09. 10. 2006, 12:42 Uhr von Uli veröffentlicht.
Hallo Skeeve,
ausprobiert hab ichs noch nicht - versuche vor copy&paste immer erst, eine Sache zu durchdringen. Und da hapert es noch stellenweise:
s/\s*,\s*(?=[^,]+$)/ und /;
das einleitende s/ hab ich noch nicht verstanden
dann folgt ein whitespace, nicht oder beliebig oft wiederholt
dann folgt das gesuchte Komma
dann folgt ein whitespace, nicht oder beliebig oft wiederholt
dann - in Klammern - ein positives look-ahead, welches die Zeichenfolge nach dem gesuchten Komma definiert:
den Ausdruck in eckigen Klammern verstehe ich wieder nicht:
eine Zeichengruppe, die kein Komma enthält ???
Nach der eckigen Klammer: Zeichengruppe einmal oder beliebig oft wiederholt am Ende des Strings
Kannst Du mir ein weiteres mal auf die Sprünge helfen ?
MfG in jedem Fall
Uli
Der folgende Beitrag wurde am 09. 10. 2006, 13:23 Uhr von seth_not@home veröffentlicht.
gudn tach!
> s/\s*,\s*(?=[^,]+$)/ und /;
>
> das einleitende s/ hab ich noch nicht verstanden
ist perl-syntax. beudetet in etwa das gleiche wie in javascript replace.
> dann folgt ein whitespace, nicht oder beliebig oft wiederholt
genauer: mindestens null mal whitespace.
ist aber unnoetig, wenn richtige kommasetzung vorausgesetzt werden kann.
> [...]
> dann - in Klammern - ein positives look-ahead, welches die Zeichenfolge nach dem gesuchten Komma definiert:
> den Ausdruck in eckigen Klammern verstehe ich wieder nicht:
> eine Zeichengruppe, die kein Komma enthält ???
[^,] ist ein beliebiges zeichen aus der zeichenklasse, die aus allen zeichen besteht, die kein komma sind. kurz: ein "nicht-komma"
> Nach der eckigen Klammer: Zeichengruppe einmal oder beliebig oft wiederholt am Ende des Strings
genauer: bis zum ende der zeile duerfen nur noch beliebig viele nicht-kommas (aber mindestens eins davon) stehen.
tsch
seth
Der folgende Beitrag wurde am 09. 10. 2006, 13:27 Uhr von Skeeve veröffentlicht.
Moin!
Und Dank Dir für die Erklärung!
> > das einleitende s/ hab ich noch nicht verstanden
> ist perl-syntax. beudetet in etwa das gleiche wie in javascript replace.
Die Macht der Gewohnheit! Bin halt seit > 12 Jahren Perlator... ;-) und seit ca. 3 Jahren Perl Monk.
-- Skeeve
© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4