2017-08-31 4 views
0

Ich habe eine Textdatei, die nach 80 Zeichen pro Zeile die verbleibenden Zeichen in die nächste Zeile drückt. Also würde ich gerne sehen, wie ich eine Logik erstellen kann, die es mir erlaubt, die nächsten 48 Zeichen aus der folgenden Zeile nur dann zu erfassen, wenn in der ersten Zeile 80 Zeichen stehen.Powershell: Ergreifen Sie Zeichen aus der nächsten Zeile bis zu einer bestimmten Anzahl von Zeichen

Beispiel (Hinweis: nur Stapeln erlaubt 76 Zeichen pro Zeile, aber die gleiche Idee)

Beispieldatei:

This is a test where I would like this entire line and everything that will 
be g 
oing to this line up until character 48.     08/31/2017 

Also im Grunde würde meine Variable halten Sie die folgenden Schritte aus:

This is a test where I would like this entire line and everything that will 
be going to this line up until character 48. 

Dies ist mein aktueller Code, der die Logik gestartet hat:

$lineArray = Get-Content "c:\sample.txt" 
ForEach ($line in $lineArray) 
If ($line.length -eq 80) {Write-Host $line.length " - Max characters 
Reached"} 
else {Write-Host $line.length " - Within Limits"} 
} 
Dank

+0

Während der Schleife sollten Sie in der Lage sein, jedes Zeichen zu zählen und schieben Sie es in das, was Variable erforderlich. Ihr Code wird Ihnen jetzt nur sagen, ob eine Zeile 80 Zeichen enthält. –

Antwort

0

Für alle neugierig ... Ich war in der Lage, es zu erreichen, indem Sie den folgenden Code:

$lineArray = Get-Content "C:\sample.txt" 
$lineNumber = 0 

ForEach ($line in $lineArray) 
{#Write-Host $line.length 

    If ($line.length -eq 80) 
    {#Write-Host $line.length " - Max characters Reached" 
    $nextLine = $lineArray[$lineNumber +1] 
    $retrieve48 = $nextLine.substring(0,48) 
    $newLine = $line + $retrieve48 
    Write-Host = $newLine 
    } 
    else {Write-Host $line.length " - Within Limits"} 
    $lineNumber++ 
    } 
+1

Vielleicht möchten Sie dafür eine for-Schleife anstelle einer foreach-Schleife verwenden. Mit einer for-Schleife erhöhen Sie jedes Mal eine variable Zahl, so dass Sie genau wissen, wo die Schleife ist. Sie müssen keine externe Variable wie '$ lineNumber' haben, die für Sie hochzählt. –

+0

Eine andere Sache ist, dass Sie möglicherweise ein Problem mit doppeltem Text haben, wenn Sie zwei Zeilen haben, die beide 80 Zeichen hintereinander sind. –

+0

Hallo Jason, gute Idee über die For-Schleife vs ForEach. Was deinen zweiten Kommentar anbelangt, weiß ich, dass ich nicht zwei aufeinanderfolgende Zeilen mit je 80 Zeichen haben werde ... aber ja, das wäre ein Problem gewesen! Danke – Awsmike

Verwandte Themen