从文件中删除第一个空行

时间:2018-06-11 09:46:23

标签: powershell

我有一个字符串:

private testservice1:Testservice1;
constructor(/*private testservice1:Testservice1*/ injector:Injector) {
  setTimeout(() => this.testservice1 = injector.get(Testservice1));
}

然后我删除不需要的空格并写入文件:

$FileContent = "
    InstallMode = $InstallMode
    Logfile = $Logfile
    Silent = y
"

文件开头仍有空格。解决方案是:

$FileContent = $FileContent.Replace(" ","")
New-Item C:\Test.ini -Type File -Value $FileContent

但这是一个丑陋的修复,使代码看起来格式不佳。有没有更好的方法从文件中删除第一个空行?

4 个答案:

答案 0 :(得分:3)

您是否考虑在File1.js (the file that exports the function): export default myFunction(e) { e.preventDefault(); // some code } window.onload = () => { document.getElementById('some-element').addEventListener('change', e => myFunction(e)); } File2.js: import myFunction from './File1'; window.onload = () => { document.getElementById('some-element').addEventListener('change', e => myFunction(e)); } 之前添加Trim - 就像这样:

Replace

$FileContent = $FileContent.Trim().Replace(" ","") 删除前导和尾随空格。如果您只想删除其中一个,还有TrimTrimStart

答案 1 :(得分:1)

第一个字符实际上不是空格而是回车符(ASCII中为13),另一个是新行(ASCII中为10)。您可以使用以下公式进行检查:

[int[]][char[]]$FileContent

您应该收到类似的内容(字符串中所有字符的ASCII编号列表):

13
10
32
32
32
32
73

如果你想修剪它,你可以使用$FileContent.Substring(2)来删除前两个字符。

Here您可以检查所有字符及其ASCII码。

答案 2 :(得分:0)

您可以使用here-string,它们可用于声明多行字符串。

由于字符串内容必须位于@"的下一行,因此它会根据您的意愿显示,但在开头不包含换行符。

这样就无需使用Trim,现有的Replace仍可按原样运作。

$FileContent = @"
    InstallMode = $InstallMode
    Logfile = $Logfile
    Silent = y
"@

答案 3 :(得分:0)

如果变量$Logfile表示包含空格的路径,则.Replace(" ","")方法也会删除这些空格。

所以我建议使用基于RegEx的-Replace运算符,它可以在第一行^处锚定 (可以省略空的替换部件)

## Q:\Test\2018\06\11\SO_50794799.ps1
$InstallMode = "doesn't matter"
$LogFile = '"C:\Program Files (x86)\_Tools\"'

$FileContent = @"
    InstallMode = $InstallMode
    Logfile = $Logfile
    Silent = y
"@

$FileContent = $FileContent -Replace "(?sm)^\s+" -Replace ' = ','='
New-Item C:\Test.ini -Type File -Value $FileContent
InstallMode=doesn't matter
Logfile="C:\Program Files (x86)\_Tools\"
Silent=y
相关问题