Hallöle zusammen,
ich habe Integerwerte zwischen 1 und 999999999 und möchte diese mittels format()
mit 1000´er Trennung versehen (999.999.999), aber genau das will nicht, wie ich es will.
Könnte mir da jemand ´nen Tipp geben, denn ich verstehe irgendwie die Hilfe nicht.
Gucky.
Zahlen formatieren mit "Format()"
Moderator: jNizM
Re: Zahlen formatieren mit "Format()"
Mit Format noch nicht probiert.. Hab dazu bisher immer die GetNumberFormat Funktion benutzt (https://github.com/jNizM/AHK_Scripts/tree/master/src/format_strings)
Code: Select all
GetNumberFormat(VarIn, locale := 0x0400)
{
if !(size := DllCall("GetNumberFormat", "uint", locale, "uint", 0, "ptr", &VarIn, "ptr", 0, "ptr", 0, "int", 0))
throw Exception("GetNumberFormat", -1)
VarSetCapacity(buf, size * (A_IsUnicode ? 2 : 1), 0)
if !(DllCall("GetNumberFormat", "uint", locale, "uint", 0, "ptr", &VarIn, "ptr", 0, "Str", buf, "int", size))
throw Exception("GetNumberFormat", -1)
return buf
}
MsgBox % SubStr(GetNumberFormat(999999999), 1, -3)
[AHK] v2.0.5 | [WIN] 11 Pro (Version 22H2) | [GitHub] Profile
Re: Zahlen formatieren mit "Format()"
Moin Gucky,
welcher Teil der Doku zu Format() lässt Dich vermuten, dass diese Funktion das können soll?
welcher Teil der Doku zu Format() lässt Dich vermuten, dass diese Funktion das können soll?
Re: Zahlen formatieren mit "Format()"
Danke, jNizM, das funktioniert prima.
@ just me: Der Teil, der sich mit {:} befasst, ließ mich das vermuten.
Gucky.
@ just me: Der Teil, der sich mit {:} befasst, ließ mich das vermuten.
Gucky.
Re: Zahlen formatieren mit "Format()"
heres another one:
Code: Select all
MsgBox % thousandsSepartor(12341241.1235355)
thousandsSepartor(n, separator := ",") {
static DECIMAL_COMMA := "."
if InStr(n, DECIMAL_COMMA)
{
T := StrSplit(n, DECIMAL_COMMA)
n := T[1]
fraction := DECIMAL_COMMA T[2]
}
return RegExReplace(n, "\d(?=(?:\d{3})+(?!\d))", "$0" separator) fraction
}
Re: Zahlen formatieren mit "Format()"
@Gucky_87: OK, da wäre ich nicht drauf gekommen.
Grüße, just me
Grüße, just me
Re: Zahlen formatieren mit "Format()"
Na ich war der Meinung, dass mit dem "Left/Right" beispiel vielleicht was zu machen wäre, denn
an sich suggeriert mir der Funktionsname u.A. genau das.
Aber ok, jNizMs Beispiel funktioniert bestens.
Danke auch an swagfag
Gucky.
an sich suggeriert mir der Funktionsname u.A. genau das.
Aber ok, jNizMs Beispiel funktioniert bestens.
Danke auch an swagfag
Gucky.
Re: Zahlen formatieren mit "Format()"
Naja, eigentlich zeigt das Beispiel nur die Ausrichtung einer Wertes mit Auffüllzeichen. Da werden nur davor oder dahinter Zeichen hinzugefügt, nicht mittendrin. Aber an sich wäre die Funktionalität in Format() ganz gut aufgehoben.
Noch auch noch ein kurzer RegEx:
Noch auch noch ein kurzer RegEx:
Code: Select all
MsgBox, % RegExReplace("9999999999", "\d{1,3}(?=(\d{3})+$)", "$0.")
Re: Zahlen formatieren mit "Format()"
Hey, das mit dem RegEx ist natürlich (wieder mal) die kürzeste Fassung.
Gucky.
Zustimm Daher hab ich da auch zuerst mit probiert.Aber an sich wäre die Funktionalität in Format() ganz gut aufgehoben.
Gucky.
Re: Zahlen formatieren mit "Format()"
habe mal dieses Beispiel gefunden
Code: Select all
;https://autohotkey.com/board/topic/32897-comma-separated-numbers/
x := 12456789.05
aa:=Separate(x)
msgbox,%aa%
return
Separate(Number, Separator = "'") {
Return RegExReplace(Number,"\G\d+?(?=(\d{3})+(?:\D|$))","$0" Separator)
}
return
Re: Zahlen formatieren mit "Format()"
Danke auch Dir garry.
Da sieht man mal wieder, wie viele Wege zum Rum, ähm... nach Rom führen.
Gucky.
Da sieht man mal wieder, wie viele Wege zum Rum, ähm... nach Rom führen.
Gucky.
Re: Zahlen formatieren mit "Format()"
Schaff es leider nicht den RegEx umzustellen, damit er auch negative Zahlen nimmt. Kann mir jemand helfen?
Re: Zahlen formatieren mit "Format()"
Peinlich, aber hat sich erledigt:
Return RegExReplace(Number,"\d+?(?=(\d{3})+(?:\D|$))","$0" Separator) ; \G = nur für positive Zahlen
Return RegExReplace(Number,"\d+?(?=(\d{3})+(?:\D|$))","$0" Separator) ; \G = nur für positive Zahlen
Re: Zahlen formatieren mit "Format()"
Altes Thema ??
Ich hoffe einer kann mir helfen, da ich mich mit Regex und Co. auch garnicht anfreunden kann.
2 Fragen
Wie bekomme ich aus 4 eine 04
Wie bekome ich aus 1234 den Wert 1.234 (also das Tausender Trennzeichen - 12345 zu 12.345)
Danke Euch
LG Keule
Ich hoffe einer kann mir helfen, da ich mich mit Regex und Co. auch garnicht anfreunden kann.
2 Fragen
Wie bekomme ich aus 4 eine 04
Wie bekome ich aus 1234 den Wert 1.234 (also das Tausender Trennzeichen - 12345 zu 12.345)
Danke Euch
LG Keule
Re: Zahlen formatieren mit "Format()"
Moin Keule,
zu Frage 1:
zu Frage 2:
Indem Du eine der oben eingestellten Lösungen verwendest.
Viel Spaß noch!
zu Frage 1:
Code: Select all
Eingabe := 4
Ausgabe := Format("{:02}", Eingabe)
MsgBox, %Ausgabe%
zu Frage 2:
Indem Du eine der oben eingestellten Lösungen verwendest.
Viel Spaß noch!
Re: Zahlen formatieren mit "Format()"
noch ein altes Beispiel ...
;-- add leading zero's 000-999
;-- add leading zero's 000-999
Code: Select all
V1:=98,I:=0
loop,5
{
v2:=(v1+i)
v3:=SubStr(000 V2, -3)
msgbox, 262208, ,%v3%,2 ;- show for 2 seconds
i++
}
exitapp
Who is online
Users browsing this forum: No registered users and 15 guests