Post by Scr1pter » 03 Mar 2019, 13:35
Hi,
hab wohl gerade einen kleinen Denkfehler.
Ich möchte gerne prüfen, ob sich innerhalb einer Zeichenkette ein Punkt nach einer Ziffer befindet.
Ist dies nicht der Fall, soll ein Punkt eingefügt werden.
Beispiel:
Aus
55 Das ist ein Test soll
55. Das ist ein Test gemacht werden.
Mit RegExReplace habe ich es hinbekommen:
Clipboard := RegExReplace(Clipboard, "(\d\d)", "$1.") ; Punkt nach 2 Ziffern einfügen
Das Problem hierbei ist, dass es egal ist ob ein Punkt vorhanden ist oder nicht.
Außerdem würde es bei ungleich 2 Ziffern zu Fehlern kommen.
Daher eine andere Variante, die fast funktioniert:
Code: Select all
;Punkt nach Ziffern einfügen
F5::
var = 55 das ist ein test
position = 0 ; Wert zu Beginn auf 0 setzen
Loop ; Endlosschleife, die verlassen wird, sobald keine Ziffer im Dateinamen mehr vorkommt
{
position++ ; Die Position in jedem Durchgang inkrementieren (Erstes Zeichen -> Zweites Zeichen usw.)
zeichen := SubStr(var, position, 1) ; Zeichen an der aktuellen Position ermitteln
if zeichen is not number ; Wenn an der aktuellen Position keine Ziffer vorhanden ist:
{
if zeichen != . ; Und wenn es kein Punkt ist:
{
var := SubStr(var, 1, position) "." SubStr(var, position) ; Einen Punkt an der ermittelten Position einfügen
MsgBox, %var%, %position% ; Neue Variable und Position in Info-Message anzeigen
break ; Schleife verlassen
}
else ; Wenn es ansonsten ein Punkt ist:
{
MsgBox, Ja, ist ein Punkt! ; Info-Message
break ; Schleife verlassen, kein SubString durchführen
}
}
}
return
.
.
.
Leider gibt's 2 Unklarheiten:
1)
Wie bekomme ich das Leerzeichen nach der Ziffer weg?
2)
Kann ich die if-Abfrage kombinieren?
Ich hatte bereits einiges ausprobiert:
if (zeichen is not number and zeichen != .)
if (zeichen is not number) and (zeichen != .)
if ( zeichen is not number ) and ( zeichen != . )
if zeichen is not number and zeichen != .
auch mit "." statt .
Danke für jede Hilfe!
Grüße
Hi,
hab wohl gerade einen kleinen Denkfehler.
Ich möchte gerne prüfen, ob sich innerhalb einer Zeichenkette ein Punkt nach einer Ziffer befindet.
Ist dies nicht der Fall, soll ein Punkt eingefügt werden.
Beispiel:
Aus [c]55 Das ist ein Test[/c] soll [c]55. Das ist ein Test[/c] gemacht werden.
Mit RegExReplace habe ich es hinbekommen:
[c]Clipboard := RegExReplace(Clipboard, "(\d\d)", "$1.") ; Punkt nach 2 Ziffern einfügen[/c]
Das Problem hierbei ist, dass es egal ist ob ein Punkt vorhanden ist oder nicht.
Außerdem würde es bei ungleich 2 Ziffern zu Fehlern kommen.
Daher eine andere Variante, die fast funktioniert:
[code]
;Punkt nach Ziffern einfügen
F5::
var = 55 das ist ein test
position = 0 ; Wert zu Beginn auf 0 setzen
Loop ; Endlosschleife, die verlassen wird, sobald keine Ziffer im Dateinamen mehr vorkommt
{
position++ ; Die Position in jedem Durchgang inkrementieren (Erstes Zeichen -> Zweites Zeichen usw.)
zeichen := SubStr(var, position, 1) ; Zeichen an der aktuellen Position ermitteln
if zeichen is not number ; Wenn an der aktuellen Position keine Ziffer vorhanden ist:
{
if zeichen != . ; Und wenn es kein Punkt ist:
{
var := SubStr(var, 1, position) "." SubStr(var, position) ; Einen Punkt an der ermittelten Position einfügen
MsgBox, %var%, %position% ; Neue Variable und Position in Info-Message anzeigen
break ; Schleife verlassen
}
else ; Wenn es ansonsten ein Punkt ist:
{
MsgBox, Ja, ist ein Punkt! ; Info-Message
break ; Schleife verlassen, kein SubString durchführen
}
}
}
return
[/code]
.
.
.
Leider gibt's 2 Unklarheiten:
1)
Wie bekomme ich das Leerzeichen nach der Ziffer weg?
2)
Kann ich die if-Abfrage kombinieren?
Ich hatte bereits einiges ausprobiert:
[c]if (zeichen is not number and zeichen != .)[/c]
[c]if (zeichen is not number) and (zeichen != .)[/c]
[c]if ( zeichen is not number ) and ( zeichen != . )[/c]
[c]if zeichen is not number and zeichen != .[/c]
auch mit "." statt .
Danke für jede Hilfe!
Grüße