0

ファイル内のデータに問題があります。テキストファイルのデータは次のようになります。

ADSE64E...Mobile phone.....................                           
EDW8......Unknown item.....................                           
CAR12.....Peugeot 206 with red colour......            
GJ........Parker model 2...................                         
Por887W8..Black coffe from Peru............  

ドットは空白を表します。最初の列はProduct_Code(長い1-10)で、2番目の列(長い1-255)はDescriptionです。必要なのは:

ADSE64E;Mobile phone                           
EDW8;Unknown item                          
CAR12;Peugeot 206 with red colour           
GJ;Parker model 2.                         
Por887W8;Black coffe from Peru 

私の解決策は次のとおりです。

  1. 最初の列は変数に到達し(そして2番目の列と同じプロセス)、両方の変数を1つにマージします。しかし、方法がわかりません。

    $ variabletxt = get-content C:\ Product.txt

    $ firstcolumn = $ variablestxt.substring(1,10)

    $ secondcolumn = $ variablestxt.substring(10)

    $ final = ???

  2. 空白スペースを置き換えますが、問題はproduct_codeが1〜10長くなる可能性があることです。

この問題をどのように解決するかについて何か提案はありますか?

4

2 に答える 2

1

スティングを分割してから、「複数のスペース」を何も置き換えないでください。

gc file.txt |%{
($_.substring(0,9)  -replace "[ ]{2,}","")+";"+($_.substring(10,254)  -replace "[ ]{2,}","")+";"
}
于 2013-01-27T11:31:10.637 に答える
1

TrimEnd メソッドで末尾のドットを削除し、残ったドットを置き換えます。

Get-Content C:\Product.txt | 
Foreach-Object { $_.TrimEnd() -replace '^([^\s]+)(\s+)(.+)$','$1;$3'}

ADSE64E;Mobile phone
EDW8;Unknown item
CAR12;Peugeot 206 with red colour
GJ;Parker model 2
Por887W8;Black coffe from Peru

@Kayasax のコメント (ありがとうございます!) によると、コードの長さが 10 文字の場合、1 列目と 2 列目の間にスペースがなくなるため、代わりにこれを使用する方が安全かもしれません。

Get-Content C:\Product.txt | 
Foreach-Object { '{0};{1}' -f $_.Substring(0,10).Trim(), $_.Substring(10).Trim() }
于 2013-01-27T12:08:52.387 に答える