gpt4 book ai didi

powershell - 相当于PowerShell 3.0 Get-Content -Raw的PowerShell 2.0命令

转载 作者:行者123 更新时间:2023-12-03 00:45:31 27 4
gpt4 key购买 nike

我目前正在研究将AS3文件转换为JS的代码段。
下面是我的脚本。

$source = "sample.as"
$dest = "modifiedScript.js"
$raw1 = Get-Content -Path $source | Out-String
$raw1 -replace "extends.*?({)", '{' | Set-Content $dest
Sample.as:
class EquivalentFraction extends MainClass 
{

// other codes
function f1(){

}
}

我试图得到这样的输出(用 extends替换 {{之间的任何内容):
class EquivalentFraction
{
// other codes
function f1(){

}
}

如果下一行有左括号,则以上代码将不起作用。
当我使用PowerShell 2.0时,我无法使用 Get-Content -Raw来获取没有行的内容。
搜索之后,我知道必须使用 Out-String而不是 -Raw开关。
但这不起作用。

最佳答案

相当于Get-Content -Raw的PowerShell v2是Get-Content | Out-String。您的代码未按预期执行操作的原因与数据导入无关。

由于使用的是正则表达式,因此无法获得预期的结果。 .与除换行符之外的任何单个字符匹配。由于您的数据在带有extends关键字的行之后的行中有大括号,因此您确实在extends{之间有换行符,这意味着extends.*?({)将永远不匹配。

您可以使用[\s\S](匹配任何空白和任何非空白)来解决此问题

$raw1 -replace 'extends[\s\S]*?{', '{'

或使用“单行模式”选项(这也使.与换行符匹配)
$raw1 -replace '(?s)extends.*?{', '{'

关于powershell - 相当于PowerShell 3.0 Get-Content -Raw的PowerShell 2.0命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48297801/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com