我有一个文本文件,名称位于0-10位,手机位于11-20位。
如何更换位置11的字符串以包含所有9'
我一直在玩Get-Content
和-replace
以熟悉。
$path = "g:\test.txt"
(Get-Content $path) -replace "Name", "Forename" | Out-File $path
示例:
STARTDELIV|BA|BATCH PRINT |
INFORMAT01|email@address.com |
INFORMAT02|01021990|CRZWS|AA|2 |
INFORMAT03|Mr. John Doe|+00000 |
所以说我想用X&替换John Doe先生的名字,我怎么能阻止它在每一行上替换相同的10个字节
答案 0 :(得分:1)
您可以使用SubString
方法从位置11开始获取字符串的10个字符:
$Path = "g:\test.txt"
$String = (Get-Content $Path)
$StringToReplace = $String.Substring(11,10)
然后使用-Replace
用全部9替换字符串的那一部分(注意这假设字符串不会以任何方式出现在字符串中的任何其他位置):
$String -Replace $StringToReplace,('9'*$StringToReplace.Length)
这是获得相同结果的更短的单行方式:
$String.Replace($String.Substring(11,10),'9'*10)