Help - Search - Members - Calendar
Full Version: strrstr?!
Mp3tag Forums > Mp3tag - Deutsch > Vorschläge
humann
hallo leute,

ich arbeite mit dem Programm viel über Scriptbefehle und mir ist aufgefallen, dass es eine Funktion gibt für das letzte Zeichen ($strrchr) und eine für die erste Zeichenkette ($strstr), aber keine für die letzte Zeichenkette (folglich $strrstr).

Bei der suche hab ich leider nichts gefunden und wenn ich einfach die letzte Zeichenkette (z.B. _-_)
mit einem regulärem Ausdruck durch ein bestimmbares Zeichen ersetze (z.B. %) dann kann ich dies nicht in einer $if funktion tun.


Die Funktion "$strrstr"(letzte Zeichenkette) wäre daher die einfachste Möglichkeit.

Ich hoffe das ihr der gleichen Meinung sein und der Vorschlag nicht so schwer umzusetzen ist.

~Gruß~
HumanN
gnor
Hallo,

du könntest als "Notlösung" $reverse verwenden und nach der umgekehrten zeichenkette suchen.
Komfortabler wäre es natürlich mit $strrstr

mfG
gnor
humann
genau das meine ich es wäre biggrin.gif komfortabeler,
aber ich arbeite bereits an einer alternativen lösung mit $regexp

trotzdem danke wink.gif
gnor
hab doch noch mal den kompletten String gemacht:

$strrchr(x,y) = $add($sub($len(x),$add($strstr($reverse(x),$reverse(y)),$len(y))),2)

(Eventuell könnte man auch mal einen Thread erstellen, wo man solche Alternativskriptbefehle sammelt. Meistens kann man sich die gewünschte Funktion ja über Umwege zusammenbasteln.)

mfG
gnor
DetlevD
QUOTE (gnor @ Apr 8 2009, 02:39) *
...
$strrchr(x,y) = $add($sub($len(x),$add($strstr($reverse(x),$reverse(y)),$len(y))),2)
...

... oder auch so:
$StrRStr(x,y) = $Sub($Sub($Add(2,$Len(x)),$Len(y)),$StrStr($Reverse(x),$Reverse(y)))

Aber wegen der Anomalien in der Funktion $StrStr wird die Formel nicht in allen Fällen ein korrektes Ergebnis liefern, z. B.
$StrRStr('.','.') ergibt 1 ; ok
$StrRStr('.','') ergibt 2; sollte 0 sein
$StrRStr('.',) ergibt 3; ???


1. $StrStr('','') ==> Ergebnis: 1 (Wo ist Hochkomma im Hochkomma? Ergebnis korrekt: 1)
2. $StrStr('''','''') ==> Ergebnis: 1 (Ergebnis wie Nr. 1, aber wie sehen die untersuchten Zeichenketten tatsächlich aus?)
3. $StrStr(',',',') ==> Ergebnis: 1 (Wo ist Komma im Komma? Ergebnis korrekt: 1)
4. $StrStr('.',',') ==> Ergebnis: 1 (Wo ist Komma im Punkt? Ergebnis korrekt: 0)
5. $StrStr(',') ==> Ergebnis: leer (2. Parameter fehlt, aber es gibt keine Syntaxfehlerwarnung) #Syntaxfehler#
6. $StrStr(''',''') ==> Ergebnis: leer (wie Nr. 5, sollte Syntaxfehler erzeugen.) #Syntaxfehler#
7. $StrStr(,) ==> Ergebnis: leer (Wo ist Leerstring im Leerstring? Ergebnis sollte sein: 0) #Ergebnisfehler#


Die Mp3tag Skriptfunktionen
$StrChr(x,y), $StrRChr(x,y), $StrStr(x,y) sowie StrRStr(x,y)
können durch eine einzige Funktion ersetzt werden:

StrIndex
Sucht in einer Zeichenkette nach einer Teilzeichenkette.
Searches a main-string for a sub-string.

Syntax:
StrIndex (main-string, sub-string, start, direction)

Parameters:
(s) main-string: the string to be searched for a sub-string.
(s) sub-string: the string to look for within the main-string.
(i) start: the position in the main string to begin search. The first character of a string is position 1.
(i) direction: the search direction, 0 searches forward, 1 searches backwards.

Returns:
(i) position of sub-string within main-string, or 0 if not found.

DD.20090408.0940.CEST
humann
danke leute ihr habt mir echt geholfen smile.gif
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2014 Invision Power Services, Inc.