2017-08-31 19 views
0

私は、1行に80文字を超えると、残りの文字を次の行にプッシュするテキストファイルがあります。だから、最初の行に80文字があるときだけ、次の行から次の48文字を取り込めるようにするロジックを作る方法を見たいと思います。Powershell:特定の文字数まで次の行の文字を取得する

例(注意:スタックのみ行あたり76個の文字を許可しますが、同じ考え方)

サンプルファイル:

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 

だから、基本的に私の変数は、以下を保持します:

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

これはロジックを開始した私の現在のコードです:

$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"} 
} 

おかげで好奇心旺盛な人のための

+0

を必要です。あなたのコードは今、行に80文字があるかどうかだけを伝えます。 –

答えて

0

...私は、次のコードを使用して、それを達成することができました:あなたは、各文字をカウントし、あるものは何でも変数にそれをプッシュすることができるはずですあなたのループの間に

$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

foreachループの代わりにforループを使用して調べることができます。 forループを使うと、毎回変数の数が増えているので、ループの場所を正確に知ることができます。 '$ lineNumber'のような外部変数を持つ必要はありません。 –

+0

もう1つのことは、2つの行が互いに80文字続く場合、重複したテキストで問題が発生する可能性があります。 –

+0

こんにちはJason、For Loop対ForEachに関する良いアイデア。あなたの2番目のコメントについては、私は80文字ごとに2つの連続した行を持っていないという事実を知っています...しかし、ええ、それは問題でした!どうも – Awsmike

関連する問題