我目前正在编写一个代码片段,将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
切换。
但它没有用。
答案 0 :(得分:3)
Get-Content -Raw
的PowerShell v2等效项为Get-Content | Out-String
。您的代码没有按预期执行操作的原因与数据导入无关。
由于您正在使用的正则表达式,您无法获得预期的结果。 .
匹配任何单个字符除了换行符。由于您的数据在之后的行上带有extends
关键字的行的大括号括号,因此您在extends
和{
之间有换行符,这意味着{ {1}}永远不会匹配。
您可以使用extends.*?({)
(匹配任何空格和任何非空格)来解决此问题
[\s\S]
或使用“单行模式”选项(使$raw1 -replace 'extends[\s\S]*?{', '{'
也匹配换行符)
.