替换特定位置的字符串

时间:2017-07-04 09:29:14

标签: powershell

我有一个文本文件,名称位于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个字节

1 个答案:

答案 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)