所以这就是问题所在。用户输入11个字母以下的字符串,然后打开文本文件," Foo"用用户给定的字符串替换,但缩进将保持不变。让我们说我在下面的文本文件中有这些数据。
Foo bar
Foo bar
Foo bar
现在用户输入" bigdog"和" Foo"将被替换为文本文件的缩进必须保持不变,见下文。
bigdog bar
bigdog bar
bigdog bar
我怎样才能做到这一点?到目前为止我的代码看起来像这样:
$name = Read-Host 'write 10 letter string'
(Get-Content file.txt) |
Foreach-Object {$_ -replace 'Foo ',$name.PadRight(11, ' ')} |
Out-File file.txt
但只需在“Foo”中添加空格即可。不削减它,所以有什么建议吗?
答案 0 :(得分:0)
使用format operator(-f
)填充和对齐文字:
$newstring = '{0,10}' -f $name
(Get-Content 'file.txt') |
ForEach-Object { $_ -replace '^Foo ', $newstring } |
Out-File 'file.txt'
我建议锚定搜索表达式(^
匹配字符串的开头),除非你想在字符串中的任何地方替换它。此外,您可以将表达式压缩为^Foo {7}
(大括号中的数字与给定次数之前的表达式匹配,即 {7}
匹配7个空格。)