Powershell: Substring
Hallo
Eine Frage an die Praktiker.
Ich wil aus einem String einen Teil "rauschneiden".
gibt aus, dass diese Zeile 45 Byte lang ist.
Jeder dieser folgenden Versuche führt zum Fehler:
Ausnahme beim Aufrufen von "Substring" mit 2 Argument(en): "Der Index und die Länge müssen sich auf eine Position in
der Zeichenfolge beziehen.
Eingabe1:
Eingabe2:
Eingabe3:
Microsoft erleuchtet mich leider nicht
Eine Bitte an die Dozenten und Akademiker die mitlesen: Geht bitte weiter zur nächsten Frage. "Powershell Core", andere Cmdlets, etc. sind hier und jetzt nicht das Thema.
Meine Bitte resultiert aus der Erfahrung mit einer praktischen Frage zu Batchprogrammierung, wo die Antwort in Richtung binärer Aufbau einer DLL, Unicode, etc. ging und für mich kein Jota zu einer Lösung beigetragen hat. Danke für das Berücksichtigen.
Grüsse
Peter
Eine Frage an die Praktiker.
Ich wil aus einem String einen Teil "rauschneiden".
$zeile.length
gibt aus, dass diese Zeile 45 Byte lang ist.
Jeder dieser folgenden Versuche führt zum Fehler:
Ausnahme beim Aufrufen von "Substring" mit 2 Argument(en): "Der Index und die Länge müssen sich auf eine Position in
der Zeichenfolge beziehen.
Eingabe1:
$Zeile =($Zeile).substring('14','34')
Eingabe2:
$Zeile =($Zeile).substring(14,34)
Eingabe3:
$Zeile =($Zeile).substring('14','34')
Microsoft erleuchtet mich leider nicht
Eine Bitte an die Dozenten und Akademiker die mitlesen: Geht bitte weiter zur nächsten Frage. "Powershell Core", andere Cmdlets, etc. sind hier und jetzt nicht das Thema.
Meine Bitte resultiert aus der Erfahrung mit einer praktischen Frage zu Batchprogrammierung, wo die Antwort in Richtung binärer Aufbau einer DLL, Unicode, etc. ging und für mich kein Jota zu einer Lösung beigetragen hat. Danke für das Berücksichtigen.
Grüsse
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 495918
Url: https://administrator.de/forum/powershell-substring-495918.html
Ausgedruckt am: 02.04.2025 um 04:04 Uhr
9 Kommentare
Neuester Kommentar
Hi
->
45678
Technisch wäre der Code aber "korrekt", nur nicht schön ...
hier das gleiche Problem.
Was du da sagst ist: Starte bei Zeichen Nummer 14 und gib ab dann die nächsten 34 Zeichen aus, wobei du halt über die 45 Zeichen hinausschiesst.
Entweder du gibst hier (14,10) an um von Zeichen 14-24 zu gehen, oder, falls du immer ab 14 bis ans Ende willst, (14)
$Zeile = "1234567890"
$Zeile = $Zeile.Substring(3,5)
echo $zeile
->
45678
Eingabe1:
14 +34 = 48, du schiesst also in der Länge über deinen String hinaus $Zeile =($Zeile).substring('14','34')
Technisch wäre der Code aber "korrekt", nur nicht schön ...
Eingabe2:
Eingabe3:
$Zeile =($Zeile).substring(14,34)
Eingabe3:
$Zeile =($Zeile).substring('14','34')
hier das gleiche Problem.
Was du da sagst ist: Starte bei Zeichen Nummer 14 und gib ab dann die nächsten 34 Zeichen aus, wobei du halt über die 45 Zeichen hinausschiesst.
Entweder du gibst hier (14,10) an um von Zeichen 14-24 zu gehen, oder, falls du immer ab 14 bis ans Ende willst, (14)
du musst die Wörter schon richtig übersetzen...
Zitat von Microsoft:
Parameters
startIndex
Int32
The zero-based starting character position of a substring in this instance.
length
Int32
The number of characters in the substring.
Parameters
startIndex
Int32
The zero-based starting character position of a substring in this instance.
length
Int32
The number of characters in the substring.
@SeaStorm hat das Beispiel dazu schon geliefert
bei mid gibt man auch die Anzahl der Zeichen an
https://docs.microsoft.com/de-de/dotnet/api/microsoft.visualbasic.string ...
Moin,
Da habe ich eine nette Einstiegslektüre: https://www.langlitz-it.de/?p=1297
Viel Spaß damit.
Erik
Zitat von @PeterGyger:
Da es eine XML Datei ist, werde ich morgen mal genauer nachlesen was Powershell da zu bieten hat.
Da es eine XML Datei ist, werde ich morgen mal genauer nachlesen was Powershell da zu bieten hat.
Da habe ich eine nette Einstiegslektüre: https://www.langlitz-it.de/?p=1297
Viel Spaß damit.
Erik

Zitat von @PeterGyger:
Ich habe Substring als MID$ aus Basic verstanden.
D.h. Angang / Endpunkt des Strings angegeben. Dabei ist der 2. Parameter die Länge die Anzahl Bytes.
Da werde ich halt eine Funktion schreiben.
Brauchst du nicht, mit Indexen kannst du alternativ auch arbeiten, bspIch habe Substring als MID$ aus Basic verstanden.
D.h. Angang / Endpunkt des Strings angegeben. Dabei ist der 2. Parameter die Länge die Anzahl Bytes.
Da werde ich halt eine Funktion schreiben.
$Zeile[3..7] -join ''
Da es eine XML Datei ist, werde ich morgen mal genauer nachlesen was Powershell da zu bieten hat.
Da ist das Auslesen über String-Funktionen ja total fehl am Platz