gpt4 book ai didi

function - Powershell 摆脱函数中的换行符

转载 作者:行者123 更新时间:2023-12-02 13:35:34 24 4
gpt4 key购买 nike

我正在尝试运行一个函数来解析包含换行符的大字符串,但是每当我将此字符串传递给函数时,它都会删除新行并使其无法解析。我在这里做错了什么吗?

function parseString([string] $s)
{
$result = $s | Select-String -pattern "foo"
return $result
}

如果我输入:

$s | Select-String -pattern "foo"

我得到了正确的结果,但使用

parseString $s

返回整个字符串,不带换行符。有什么建议吗?

编辑:嗯,经过一番困惑之后,我去掉了 [string],所以它是

function parseString($s)

这似乎有效,但为什么呢?

最佳答案

什么是$s?如果它是一个字符串数组,那么由于您说 parseString 接受一个字符串,因此该字符串数组将转换为字符串。另一方面,如果 $s 是单个字符串,它将起作用(如下所示):

function parseString([string] $s)
{
$result = $s | Select-String -pattern "foo"
return $result
}

$s =@'
first line
second line with foo

third line
'@

parseString $s

但是如果$s=@("first line","secondline with foo","third line"),字符串数组首先被转换为字符串(通过简单地连接每个字符串),因此你将失去换行符。如果您从 Get-Content 等获得了 $s,情况就会如此。

请注意,大多数时候,您不需要在 Powershell 中指定类型。无论是在分配变量时还是在函数参数中。

附注:

如果你这样做了

$ofs = "`n"
parseString $s

您将在使用[string]的函数中获得预期结果。

关于function - Powershell 摆脱函数中的换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8844438/

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