编辑文本文件中的空格
Edit whitespace in text file
问题来了。用户输入 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' 中添加空格并不能减少它,所以有什么建议吗?
使用 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 个空格)。
问题来了。用户输入 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' 中添加空格并不能减少它,所以有什么建议吗?
使用 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 个空格)。