Seite 1 von 1
String Manipulationen
Verfasst: 03.11.2004 17:41
von Criss
Hi zusammen,
folgendes Problem, macht mir Kopfzerbrechen!
string.s(1) = "x yy zzz x x"
string.s(2) = "bla bla bla txt txt txt"
string.s(3) = " zzz yya x zzz"
string.s(4) = "bla bla bla txt txt txt"
Dies sind die vorgegeben Strings, als Beispiel! Natürlich sind
die Strings immer wieder verschieden!
Ok, nun muss ich einen Weg finden, wie ich die Zeichen:
x, yy und zzz
in:
u, vv und www ändern kann! Und von u,vv,www in r, ss, ttt etc. (Alphabet rückwärts)
UND einen Weg um diese Zeichen überhaupt zu erkennen, d.h. x, yy und zzz und noch weitere sind in Data-Anweisungen vorgegeben!
Das ganze wird in einem Editorgadget angezeigt und soll sich per Buttonklick ändern können!
Tausend Dank, schonmal zum voraus!
Verfasst: 03.11.2004 18:05
von NicTheQuick
Vielleicht so?
Aber mal was anderes:
Wieso wird bei dir aus [c]'x' -> 'u' -> 'r'[/c], aus [c]'yy' -> 'vv' -> 'ss'[/c] und aus [c]'zzz' -> 'www' -> 'ttt'[/c]?
Du sagtest doch, dass das ganze rückwärts gehen soll, oder? Dann siehst das nämlich so für mich aus:
[c]'x' -> 'w' -> 'v'
'yy' -> 'xx' -> 'ww'
'zzz' -> 'yyy' -> 'xxx'[/c]
Ode etwas nicht?
Verfasst: 03.11.2004 18:15
von MLK
unabhängig von groß und kleinschreibung - wäre dies die richtung in die es gehen soll ?
Code: Alles auswählen
alphabetIndex.s="abcdefghijklmnopqrstuvxyz"
text.s="dies ist ein kleiner testtext"
For x=1 To Len(text)
If Mid(text,x,1)=" " ;oder sonstige satzzeichen, sonderzeichen
ergebnis.s+" "
ElseIf Mid(text,x,1)="a"
ergebnis.s+"z"
Else
ergebnis.s+Mid(alphabetIndex,FindString(alphabetIndex,Mid(text,x,1),1)-1,1)
EndIf
Next
Debug ergebnis
Verfasst: 03.11.2004 18:22
von Criss
Danke schonmal,
das mit dem Replacestring ist schon in Ordnung zum ersetzen, bin ich auch schon am proben! Aber das mit der Erkennung der Zeichen ist etwas komplizierter als ich geschrieben habe!
Also, ich versuchs nochmals anders!
Vergiss erstmal das mit dem Alphabet, ist nicht massgebend! Wobei Du natürlich schon recht hast mit der Reihenfolge!
Die Reihenfolge der Zeichen ist genau festgelegt: (sind nämlich Akkorde)
"C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"
"Cm", "C#m", "Dm", "D#m", "Em", "Fm", "F#m", "Gm", "G#m", "Am", "A#m", "Bm"
Die Textdatei die im Editorgadget angezeigt wird, sieht z.b. so aus:
*****************************
Knocking on Heaven's Door
Bob Dylan
G D Am
Mama take this badge of of me,
G D C
I can't use it anymore
G D Am
It's getting dark, too dark to see
etc.
*****************************
Wie finde ich hier nun die Akkorde heraus, anhand der vorgegeben Strings (siehe oben!). Damit ich diese "Andersfarbig" anzeigen kann und schliesslich per Buttonklick transponieren (G -> G# / D -> D# etc.)?
Verfasst: 03.11.2004 18:36
von NicTheQuick
Also ich würde mir eine Erkennungsroutine für die Akkorde schreiben, die sozusagen den Grundton der einzelnen Akkorde bestimmen kann und in eine Nummer umwandelt und den Reststring, also z.B. "7" oder "m6" oder "b", auch abspeichert. Am einfachsten geht das mit einer LinkedList und einer Structure mit zwei Elementen.
Jetzt fehlt noch eine Procedure, die diese LinkedList wieder umsetzen kann in einen String und eine Procedure, die die Nummer eines Grundtons transponieren kann. Sagen wir mal C = 0, C# = 1, Db = 2, usw. Also am besten noch enharmonisch verwechselte Töne unterscheiden, sonst verwirrt das später vielleicht etwas.
Das mit dem Einfärben im EditorGadget ist eigentlich ganz einfach. Aber dafür lasse ich dich mal lieber selbst suchen. Denn dafür gibt es schon zeig Routinen hier im alten Forum und in der PureArea.