Ja, ja!
Hin und wieder sind es doch nur kleinigkeiten die einem das Leben erst erschweren, aber auf der anderen Seite auch erleichtern können. Hört sich paradox an, aber so ist es mir grad eben ergangen.
Ich zitiere mich mal selbst.
Und gemeint war damit folgender Code.
Den Zähler 'ix' braucht man nicht. Den kann man sich einsparen. Und außerdem kann man den eigentlichen Ersetzungs-Code so ändern, das man gar nicht auf einen vergleichenden Text a-la '= "&#" then' angewiesen ist.balu hat geschrieben: ↑Mi, 30.05.2018 00:23Code: Alles auswählen
sub tete2 dim NCRdez(1 to 2, 1 to 13) as String NCRdez(1,1) = "µ" : NCRdez(2,1) = "µ" NCRdez(1,2) = "¼" : NCRdez(2,2) = "¼" NCRdez(1,3) = "½" : NCRdez(2,3) = "½" NCRdez(1,4) = "¾" : NCRdez(2,4) = "¾" NCRdez(1,5) = "Ä" : NCRdez(2,5) = "Ä" NCRdez(1,6) = "Ö" : NCRdez(2,6) = "Ö" NCRdez(1,7) = "Ø" : NCRdez(2,7) = "Ø" NCRdez(1,8) = "Ü" : NCRdez(2,8) = "Ü" NCRdez(1,9) = "ß" : NCRdez(2,9) = "ß" NCRdez(1,10) = "ä" : NCRdez(2,10) = "ä" NCRdez(1,11) = "ö" : NCRdez(2,11) = "ö" NCRdez(1,12) = "ø" : NCRdez(2,12) = "ø" NCRdez(1,13) = "ü" : NCRdez(2,13) = "ü" sTmpNameX = "Wäster Überflutet Örtliche Augenärzte, und nu is nix mehr weiß." '____________________________________________________________________________________________ ix = 0 for r = 1 to Len(sTmpNameX) if Mid(sTmpNameX, r, 2) = "&#" then ix = ix + 1 end if next r print "IX = Insgesamt zu ersetzende NCRdez-Codes: " & ix ' <- Diese Zeile braucht man nicht unbedingt. Kann also gelöscht werden. '____________________________________________________________________________________________ sTmpX = sTmpNameX for r2 = 1 to ix for r3 = 1 to 13 sTmpX2 = REPLACE(sTmpX, NCRdez(1, r3), NCRdez(2, r3)) sTmpX = sTmpX2 next r3 next r2 PRINT sTmpX end sub
Hier ist der komplette Ersetzungs-Code.
Code: Alles auswählen
for r2 = 1 to Len(sTmpX)
for r3 = 0 to 12
sTmpX2 = REPLACE(sTmpX, aUTF(0, r3), aUTF(1, r3))
sTmpX = sTmpX2
next r3
next r2
Aber warum '0 to 12'?
Ganz einfach.
Das ist die maximale größe des Array. Mal einfach ausgedrückt.
Code: Alles auswählen
aUTF = DimArray(1, 12)
Tja, das ist wie folgt.
Ein UTF-Code kann ja folgendes sein 'ä'. Was dem kleinem 'ä' entspricht.
Wenn man jetzt aber aus "unerklärlichen" Gründen auch noch das in einem Text stehen hat Ø' (steht für Ø), dann ist es Essig mit 2 Zeichen abzählen. Also war das für mich zu anfangs ein Problem. Doch nach ein paar tests kam ich auf die "simple" gezeigte Lösung. Und wär ich nicht auf dies kleine Problem gestoßen, hätte ich mich noch mit der bisherigen alten Lösung rumgeschlagen. Jetzt erleichtert mir die Lösung das leben.
Hier noch mal der komplette Code mit einem Beispieltext.
Code: Alles auswählen
Sub Main
aUTF = DimArray(1, 12)
aUTF(0,0)= "ä" : aUTF(1,0)= "ä"
aUTF(0,1)= "Ä" : aUTF(1,1)= "Ä"
aUTF(0,2)= "ö" : aUTF(1,2)= "ö"
aUTF(0,3)= "Ö" : aUTF(1,3)= "Ö"
aUTF(0,4)= "ü" : aUTF(1,4)= "ü"
aUTF(0,5)= "Ãœ" : aUTF(1,5)= "Ü"
aUTF(0,6)= "ß" : aUTF(1,6)= "ß"
aUTF(0,7)= "Ë?" : aUTF(1,7)= "½"
aUTF(0,8)= "Ľ" : aUTF(1,8)= "¼"
aUTF(0,9)= "ľ" : aUTF(1,9)= "¾"
aUTF(0,10)= "Å™" : aUTF(1,10)= "ø"
aUTF(0,11)= "Å ~" : aUTF(1,11)= "Ø"
aUTF(0,12)= "Ø" : aUTF(1,12)= "Ø"
sTmpX = "Ronden Ø 50 mm Automatenstahl 11SMn30+C gesägt Länge 50 mm"
'____________________________________________________________________________________________
for r2 = 1 to Len(sTmpX)
for r3 = 0 to 12
sTmpX2 = REPLACE(sTmpX, aUTF(0, r3), aUTF(1, r3))
sTmpX = sTmpX2
next r3
next r2
PRINT sTmpX
End Sub
Gruß
balu