Zeichenkette mit evtl. Vornullen in Zahl umwandeln
Hallo Leute,
ich zerpflücke in einer For-Schleife einen String und erhalte Zeichenketten wie z.B 0055 oder 2045. Um diese Werte numerisch vergleichen zu können (z.B. grösser 1500 etc.) muss ich sie doch zuerst in eine "Zahl" umwandeln. Hat jemand ne Idee wie ich das geschickt anstellen könnte? Vielen Dank im voraus!
Haegar
ich zerpflücke in einer For-Schleife einen String und erhalte Zeichenketten wie z.B 0055 oder 2045. Um diese Werte numerisch vergleichen zu können (z.B. grösser 1500 etc.) muss ich sie doch zuerst in eine "Zahl" umwandeln. Hat jemand ne Idee wie ich das geschickt anstellen könnte? Vielen Dank im voraus!
Haegar
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 160762
Url: https://administrator.de/contentid/160762
Ausgedruckt am: 26.11.2024 um 06:11 Uhr
8 Kommentare
Neuester Kommentar
Moin haegar75,
wenn diese "numerischen Teilstrings" beispielsweise alle jeweils 4stellig sind, dann schreib eine 5stellige (runde) Zahl davor und arbeite mit Modulo.
Demo am CMD-Prompt - ich schreibe "10000" vor deinen String "0055"
Prinzip klar?
Grüße
Biber
wenn diese "numerischen Teilstrings" beispielsweise alle jeweils 4stellig sind, dann schreib eine 5stellige (runde) Zahl davor und arbeite mit Modulo.
Demo am CMD-Prompt - ich schreibe "10000" vor deinen String "0055"
>set /a 100000055 %10000
55
:: ich schreibe "10000" vor den String "2045"
>set /a 100002045 %10000
2045
::oder mit Variable
>set meinevar=0815
>set /a 10000%meinevar% % 10000
815
Prinzip klar?
Grüße
Biber
Moin AsciWhite,
hab nun grad zufällig kein XP in einer VM auf meinem Nokia installiert, kann deshalb nicht nachschauen.
Aber eine flüchtige Recherche im Technet sagt eigentlich, dass dieses Feature unter XP schon verfügbar war.
Hast du diese Zeile vom CMD-Prompt aus gefeuert oder in einer Batchdatei?
Grüße
Biber
hab nun grad zufällig kein XP in einer VM auf meinem Nokia installiert, kann deshalb nicht nachschauen.
Aber eine flüchtige Recherche im Technet sagt eigentlich, dass dieses Feature unter XP schon verfügbar war.
Hast du diese Zeile vom CMD-Prompt aus gefeuert oder in einer Batchdatei?
Grüße
Biber
@echo off
set meinevar=0815
set /a 10000%meinevar% % 10000
@echo off
set /p tmp=Eingabe:
SET /a 10000%tmp% % 10000
Beides klaptt bei mir nicht :-O Jedes mal bekomme ich die Meldung: fehlender Operator
Habs jetzt über CMD und über Batchdatei probiert - gleicher Effekt :-O
*update*
wenn die Variable %meinevar% mit der 0815 belegt ist klappt die Zeile:
>>set meinevar
>>meinevar=0815
>>set /a 10000%meinevar% % 10000
>>815
Also klappt das ganze anscheined über Batchdatei nicht, weil die Variable zu spät aufgelöst wird.
Wie bekomme ich die Ausgabe eigentlich wieder einer Variable zugewiesen? ggf. so: ?
set /a temp=10000%meinevar% % 10000
Hallo AsciWhite,
@Biber schrieb:
(temp ist vordefiniert, darum sollte man ggf. auf das Überschreiben des Werts verzichten und einen anderen Variablenname verwenden)
Grüße
rubberman
@Biber schrieb:
Demo am CMD-Prompt
und antwortete dir mit einem Wink mit dem ZaunpfahlHast du diese Zeile vom CMD-Prompt aus gefeuert oder in einer Batchdatei?
Genau wie bei FOR Variablen und Stringliteralen wird auch beim Modulo-Operator das Prozentzeichen verdoppelt, sobald es in einem Batchscript verwendet werden soll. Und natürlich funktioniert auch eine Zuweisung per SET /A.set /a num=10000%meinevar% %% 10000
Grüße
rubberman
Hallo rubberman,
was du mir mit dem ersten Teil deiner Antwort sagen willst erschließt sich mir zwar nicht ganz da ich versucht habe die Versuche und Ausgaben darzustellen, aber zum zweiten Teil gibt von mir 5 Sterne :D was so ein beschi**enes %-Zeichen ausmachen kann *roleeyes*.
Jetzt klappt auch mit der Batchdatei ;)
Gruss und schönen Abend
was du mir mit dem ersten Teil deiner Antwort sagen willst erschließt sich mir zwar nicht ganz da ich versucht habe die Versuche und Ausgaben darzustellen, aber zum zweiten Teil gibt von mir 5 Sterne :D was so ein beschi**enes %-Zeichen ausmachen kann *roleeyes*.
Jetzt klappt auch mit der Batchdatei ;)
Gruss und schönen Abend
Hallo AsciWhite
Grüße
rubberman
was du mir mit dem ersten Teil deiner Antwort sagen willst erschließt sich mir zwar nicht ganz
@Biber hat am CMD-Prompt getestet (also direkt in ein CMD Fenster händisch eingegeben), während du mit einem Batchscript arbeiten willst. Da gibt es einige kleine Unterschiede, die aber entscheidend für das Funktionieren des Codes sind.Grüße
rubberman