我有一个包含以下内容的文件:
1的 2 第3
4的 5 6
7的 8 9
XYZ
ABC999XXXXXXX
我需要在文件中搜索3个数字字符,并根据用户输入替换第一个和第三个字符。如果用户输入字符1 = 0且字符3 = 9,我需要返回。
0的 2 9
0的 5 9
0 8 9
我正在尝试通过简单的搜索和替换来完成此操作,而无需为每个字符创建变量。另外值得注意的是,我需要搜索3个数字的标准,丢弃字母字符行。
请注意:这是我需要做的简化版本。情况很长,还有更多的领域,但我希望将它煮沸下来会给我一些我可以使用的东西。提前谢谢。
答案 0 :(得分:0)
假设条件与您所描述的一样,评论中建议的-replace
操作应该只是您想要的。
您需要做的就是接受用户输入并将其插入到替换字符串中,如下所示:
# Get user input for the first digit
do{
$a = Read-Host -Prompt "Input 1st digit"
} while ($a -notmatch "^\d$")
# Get user input for the third digit
do{
$b = Read-Host -Prompt "Input 3rd digit"
} while ($b -notmatch "^\d$")
# pattern that matches exactly 3 digits, captures the middle one
$pattern = "^\d(\d)\d$"
# replacement consisting of the user input and a reference to the capture group
$replace = "$a{0}$b" -f '${1}'
# Let's replace!
$InputObject = Get-Content "C:\my\file\path.txt"
$InputObject -replace $pattern,$replace