• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Makro: Nur (RegExp: [a-zA-Z0-9]) erlauben

BriToGi

Geowizard
Hallo zusammen,

gibt es in einem GSAK-Makro die Möglichkeit wie im Beispiel (PHP) einen String von alle Zeichen Außer einer definierten Auswahl an Zeichen zu befreien?

Also nur a-z, A-Z, 0-9 erlauben, den Rest entfernen?

Irgendwie mit RegExReplace? Syntax?

Habe es in keinem Makro gefunden..

Danke!


Code:
PHP:
$erlaubte_zeichen = "/[^a-zA-Z0-9]+/";
$d_Name_ok = preg_replace($erlaubte_zeichen,'',$d_Name);

GSAK: 
???
 
OP
BriToGi

BriToGi

Geowizard
Es kam eine PN mit dem Hinweis auf 2 Zeilen im GarminExport-Makro

Danke für die PN, würde ja gerne antworten wenn Du PNs erlauben würdest ;-)

Hi,
es ist ja nicht so dass ich nicht schon mehrere Stunden mit genau diesen beiden Zeilen meinen halben Vormittag verbracht habe. Man muss dazu aber sagen dass ich Regular Expressions wirklich verfluche. Wenn mir jemand die erste Zeile entsprechend ändern könnte? Vielen Dank!

Hier das Ergebnis...
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    13,7 KB · Aufrufe: 1.045
OP
BriToGi

BriToGi

Geowizard
ZITAT: >>Dein Freund ist auf alle Fälle F1. Das ist nicht nur Hilfe, sondern auch Manual, Tutorial und Referenz (zum Beispiel für RegEx) mit vielen Beispielen.


Ja da kann man "A" durch "B" ersetzen, zu obigem Beispiel bietet die Hilfe absolut nichts.
 

8812

Geoguru
Hilfe zur Selbsthilfe: F1 in GSAK drücken > Suchwort: RegEx und LESEN.

Code:
#*******************************************
# MacVersion = 1.0
# MacDescription = Html und Umlaute aus Text entfernen
# MacAuthor = HHL
# MacFileName = NurZeichen.gsk
# MacUrl =
#*******************************************
$_Special = $d_ShortDescription + $_NewLine + $d_LongDescription

#Strip out html tags
$regex = "</?[a-z][a-z0-9]*[^<>]*>"

#Replace Umlaute, S-Zett, @
$_Special = RegExReplace("(?-i)\ä*",$_Special,"ae")
$_Special = RegExReplace("(?-i)\ö*",$_Special,"oe")
$_Special = RegExReplace("(?-i)\ü*",$_Special,"ue")
$_Special = RegExReplace("(?-i)\Ä*",$_Special,"Ae")
$_Special = RegExReplace("(?-i)\Ö*",$_Special,"Oe")
$_Special = RegExReplace("(?-i)\Ü*",$_Special,"Ue")
$_Special = RegExReplace("(?-i)\ß*",$_Special,"ss")
$_Special = RegExReplace("(?-i)\@*",$_Special,"at")

$_Special = RegExReplace($regex,$_Special,"")

MsgOk Msg=$_Special

Frohes Lernen
Hans
 
OP
BriToGi

BriToGi

Geowizard
Danke, das ist total nett aber immer noch keine Lösung zu meiner Frage. In Deinem Beispiel muss jedes Zeichen separat abgearbeitet werden.

Einen Filter wie gesucht "a-z, 0-9 durchlassen, rest weg" sehe ich dort immer noch nicht...
 

8812

Geoguru
BriToGi schrieb:
Danke, das ist total nett aber immer noch keine Lösung zu meiner Frage. In Deinem Beispiel muss jedes Zeichen separat abgearbeitet werden.

Einen Filter wie gesucht "a-z, 0-9 durchlassen, rest weg" sehe ich dort immer noch nicht...
Das macht ja wohl das Makro für dich. Wo ist das Problem?

aa3c9b8229bd209612f6ee7b37cda059.png


Wenn Du Umlaute ganz entfernen willst, dann kommentier doch einfach die entsprechende Zeile aus.

Hans

NB: Da bei mir gerade mal wieder der ...detektor anschlägt bin ich wieder weg. War ein Versuch. Ist leider in die Hose gegangen.
 
OP
BriToGi

BriToGi

Geowizard
Toll, Posting überfliegen, ein paar mal RTFM gröhlen und wenn das Problem am Ende doch nicht gelöst ist (weil der blöde TE - der "Depp" - schon RTFM gemacht hat, die entsprechenden Passagen nicht gefunden hat (weil es sie nicht gibt) und daher eine Präzise Frage gestellt hat) sich einfach zurückziehen und dann noch behaupten der TE sei zu dämlich, ärmer gehts echt nicht mehr.

EDIT: Ja, wurde so nicht wörtlich behauptet, aber durch die Blume...

Zu schwer einfach zu schreiben: "Sorry Frage falsch gelesen, da weiß ich auch keine Antwort drauf"?



Gut, kommen wir zu den genauen Gründen des Problems: Ich benutze ja POIs um meine Caches auf meinem Oregon mit Zusatzfunktionen anzureichern. Leider ist die Anzahl auf 20 POI-Dateien pro Gerät begrenzt. Ich brauche aber mehr. Nach langem Überlegen entschied ich mich dazu, ein paar Attribute in normale GPX-Dateien auszulagern (Minimal-GPX, also keine "Caches", sondern einfache Wegpunkte denen ich beliebige Icons zuweisen kann).

Dabei tritt folgendes Problem auf: Waypoints in deren Namen Zeichen wie ' öäö (Apostroph, Umlaute) vorkommen, bewirkan dass das Einlesen dieser GPX-Datei ab diesem Wegpunkt abgebrochen wird.

Normale GPX-Dateien mit Caches sind von diesem Problem offenbar nicht betroffen.

Daher meine Idee für die Benennung der Attribut-Wegpunkte nur [a-zA-Z0-9] zuzulassen. Nur Umlaute rausfoltern erschien mir wenig sinnvoll, war am Wochenende in Prag, die haben sowas von viele böse Zeichen, da werde ich nie fertig.

Also - wenn jemand die Syntax für eine entsprechende RegEx-Dingsmums kennt - immer her damit. Danke
 

8812

Geoguru
Proletenhaftes Rumpoltern ist wenig hilfreich.
Tip: Such mal in deinem Macroordner nach einem Makro "PoiDescription.Gsk".

Jetzt ist aber wirklich Schluß für mich.
Hans
 

8812

Geoguru
BriToGi schrieb:
[...] Ich benutze ja POIs um meine Caches auf meinem Oregon mit Zusatzfunktionen anzureichern. Leider ist die Anzahl auf 20 POI-Dateien pro Gerät begrenzt.[...]
Das Limit gibt es so nicht. Es gibt ein Limit für 20 GPI Files. Jedes GPI File kann jedoch Dutzende Poi Files beinhalten.
(Anm: Ich habe 19 GPI-Files aus dem GSAK-Export auf dem Garmin und ein eigenes GPI-File, in dem sich 28 POI-Files befinden Das sind 20 GPIs mit insgesamt 47 POI-Files).
Dein Workflow scheint ziemlich suboptimal zu sein, um es mal freundlich auszudrücken. ;-)

Hans
 
OP
BriToGi

BriToGi

Geowizard
>>Das Limit gibt es so nicht. Es gibt ein Limit für 20 GPI Files. Jedes GPI File kann jedoch Dutzende Poi Files beinhalten.

Das klingt sehr interessant!

>>Dein Workflow scheint ziemlich suboptimal zu sein, um es mal freundlich auszudrücken. ;-)

Ohne die obige Info die für mich neu ist - vielleicht...

5x D-Wertung, 5x T-Wertung, 5x Größe (4+ "leer"), 3x Fav (+ 1x "leer") und das Leerdeld für Disabled/Archived. 20. Voll. (Oder auch nicht, die mehrere POIs in einem Gpi-File muss ich mir mal in Ruhe angucken)

Der Unterschied zu Deinen Icons ist dass ich hinter den Dosen eine weiße Fläche habe (und dadurch bei "keinem Icon" ein weißes Feld platzieren muss. Du ordnest nur um das wesentlich kleinere Icon die Zusatzinfos an die Du wirklich benötigst.

>>Proletenhaftes Rumpoltern ist wenig hilfreich.
:???:
 
OP
BriToGi

BriToGi

Geowizard
>>(Anm: Ich habe 19 GPI-Files aus dem GSAK-Export auf dem Garmin und ein eigenes GPI-File, in dem sich 28 POI-Files befinden Das sind 20 GPIs mit insgesamt 47 POI-Files).

Klingt als wäre das zwanzigste ein statisches File das sich nicht alle paar Tage ändert? Dem Export-Makro beizubringen, mehrere POI-Files in einer GPI-Datei unterzubringen, scheint wieder ein etwas größeres Unterfangen zu werden...
 
OP
BriToGi

BriToGi

Geowizard
EDIT:

Lösung:

Entfernt alle Zeichen AUSSER a-z A-Z 0-9 _ . : - aus einem String.

Code:
#*******************************************
# MacVersion = 1.0
# MacDescription = New macro
# MacAuthor = tobi
# MacFileName = New macro.gsk
# MacUrl =
#*******************************************


$String = "Tobi's Umlautsammlung: ÖÄÜßöäü"

$regex = "[^a-zA-Z0-9_.:-]"

$_Special = RegExReplace($regex,$String,"")

MsgOk Msg=$_Special
 
Oben