Zahlen formatieren mit "Format()"

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Zahlen formatieren mit "Format()"

Re: Zahlen formatieren mit "Format()"

Post by Taurus » 10 Jul 2019, 10:08

Peinlich, aber hat sich erledigt:

Return RegExReplace(Number,"\d+?(?=(\d{3})+(?:\D|$))","$0" Separator) ; \G = nur für positive Zahlen

Re: Zahlen formatieren mit "Format()"

Post by Taurus » 10 Jul 2019, 10:03

Schaff es leider nicht den RegEx umzustellen, damit er auch negative Zahlen nimmt. Kann mir jemand helfen?

Re: Zahlen formatieren mit "Format()"

Post by Gucky_87 » 12 Feb 2019, 08:40

Danke auch Dir garry.
Da sieht man mal wieder, wie viele Wege zum Rum, ähm... nach Rom führen.

Gucky.

Re: Zahlen formatieren mit "Format()"

Post by garry » 12 Feb 2019, 07:52

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()"

Post by Gucky_87 » 12 Feb 2019, 06:13

Hey, das mit dem RegEx ist natürlich (wieder mal) die kürzeste Fassung.
Aber an sich wäre die Funktionalität in Format() ganz gut aufgehoben.
Zustimm ;) Daher hab ich da auch zuerst mit probiert.

Gucky.

Re: Zahlen formatieren mit "Format()"

Post by just me » 12 Feb 2019, 06:09

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:

Code: Select all

MsgBox, % RegExReplace("9999999999", "\d{1,3}(?=(\d{3})+$)", "$0.")

Re: Zahlen formatieren mit "Format()"

Post by Gucky_87 » 12 Feb 2019, 05:35

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.

Re: Zahlen formatieren mit "Format()"

Post by just me » 12 Feb 2019, 05:13

@Gucky_87: OK, da wäre ich nicht drauf gekommen.

Grüße, just me

Re: Zahlen formatieren mit "Format()"

Post by swagfag » 12 Feb 2019, 05:10

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()"

Post by Gucky_87 » 12 Feb 2019, 05:03

Danke, jNizM, das funktioniert prima.

@ just me: Der Teil, der sich mit {:} befasst, ließ mich das vermuten.

Gucky.

Re: Zahlen formatieren mit "Format()"

Post by just me » 12 Feb 2019, 04:53

Moin Gucky,

welcher Teil der Doku zu Format() lässt Dich vermuten, dass diese Funktion das können soll?

Re: Zahlen formatieren mit "Format()"

Post by jNizM » 12 Feb 2019, 04:15

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)

Zahlen formatieren mit "Format()"

Post by Gucky_87 » 12 Feb 2019, 04:05

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.

Top