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),第二列(长 1-255)是描述。我需要的是:

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

我的解决方案是:

  1. 第一列到达变量(与第二列相同的过程)并将两个变量合并为一个..但我不知道如何..

    $variabletxt = 获取内容 C:\Product.txt

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

    $secondcolumn = $variablestxt.substring(10)

    $最终 = ???

  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 个字符,则第一列和第二列之间将没有空格,因此使用它可能更安全:

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