gpt4 book ai didi

c# - 在 Powershell 中替换字符串的一部分

转载 作者:太空宇宙 更新时间:2023-11-03 21:08:55 24 4
gpt4 key购买 nike

现在我正在尝试将我的 C# 代码转换为 PowerShell 脚本。

我在 C# 中的实际函数如下所示:

private static string ReplaceStringPartAt(string mainstring, int position, string replacement)
{
StringBuilder strBuilder = new StringBuilder(mainstring);
strBuilder.Remove(position, replacement.Length);
strBuilder.Insert(position, replacement);
return strBuilder.ToString();
}

我的 PowerShell 函数如下:

function ReplaceStringPartAt($mainstring, $position, $replacement)
{
$strBuilder = New-Object System.Text.StringBuilder;
$strBuilder.AppendLine($mainstring)
$strBuilder.Remove($position, $replacement.Length);
$strBuilder.Insert($position, $replacement);
return $strBuilder.ToString();
}

但我总是得到一个 [System.Text.StringBuilder] 作为返回值。

要使该功能再次运行,我错过了什么?

最佳答案

StringBuilder class 的许多方法返回相同的 StringBuilder 实例,因此您可以将多个调用链接在一起。这在 C# 中是无害的,但在 PowerShell 中,您需要显式捕获这些返回值,这样它们就不会出现在您的函数输出中。您可以将它们通过管道传输到 Out-Null...

$strBuilder.AppendLine($mainstring) | Out-Null
$strBuilder.Remove($position, $replacement.Length) | Out-Null;
$strBuilder.Insert($position, $replacement) | Out-Null;

...或将它们转换为 [Void]...

[Void] $strBuilder.AppendLine($mainstring)
[Void] $strBuilder.Remove($position, $replacement.Length);
[Void] $strBuilder.Insert($position, $replacement);

...或将所有调用(包括 .ToString())链接在一起...

return $strBuilder.AppendLine($mainstring) `
.Remove($position, $replacement.Length) `
.Insert($position, $replacement) `
.ToString();

关于c# - 在 Powershell 中替换字符串的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39107733/

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