如何将字符串的颜色保存到变量中
How to save color of string into variables
我使用的是 PowerShell 5.1,我想将一些彩色文本存储到一个变量中。我知道您可以使用 Write-Host
将一些彩色字符串打印到控制台中,如下所示:
但是,我似乎无法将它们保存到变量中:
我尝试了各种解决方案,例如给定的解决方案 here,但似乎没有任何效果。
您可以将 Write-Host
所需的参数参数存储在变量中:
$hi = @{ Object = 'hi!'; ForegroundColor = 'Red' }
# ... later
Write-Host @hi
尝试将文本输出分配给变量 $hi = Write-Host ...
的原因是因为 Write-Host
没有 return它打印的文本 - 它将带有 ANSI 颜色代码的文本发送到控制台。
您可以想出一个方便的方案,在要打印的文本中包含颜色信息,并编写代码,在将文本打印到屏幕时使用该颜色信息,正如其他发布的答案所建议的那样。
例如,
$text = @'
{
"text": [["The quick ", "red"], ["brown fox ", "blue"],
["jumped over ", "yellow"], ["the lazy ", "cyan"],
["dog", "white"]]
}
'@
($text | ConvertFrom-Json).text |
% { Write-Host $_[0] -ForegroundColor $_[1] -NoNewLine }
虽然这可能非常乏味。也许检查 PSGallery 看看是否有任何处理彩色文本的包为您的应用程序提供方便的命令。
使用格式为以下的 PowerShell ANSI 转义序列:
$([char]0x1b)[#m
其中 #
代表一个数字。 (有关 ANSI 转义序列的更多信息,请参阅 here)
在上述问题的情况下,它看起来像这样:
我使用的是 PowerShell 5.1,我想将一些彩色文本存储到一个变量中。我知道您可以使用 Write-Host
将一些彩色字符串打印到控制台中,如下所示:
但是,我似乎无法将它们保存到变量中:
我尝试了各种解决方案,例如给定的解决方案 here,但似乎没有任何效果。
您可以将 Write-Host
所需的参数参数存储在变量中:
$hi = @{ Object = 'hi!'; ForegroundColor = 'Red' }
# ... later
Write-Host @hi
尝试将文本输出分配给变量 $hi = Write-Host ...
的原因是因为 Write-Host
没有 return它打印的文本 - 它将带有 ANSI 颜色代码的文本发送到控制台。
您可以想出一个方便的方案,在要打印的文本中包含颜色信息,并编写代码,在将文本打印到屏幕时使用该颜色信息,正如其他发布的答案所建议的那样。
例如,
$text = @'
{
"text": [["The quick ", "red"], ["brown fox ", "blue"],
["jumped over ", "yellow"], ["the lazy ", "cyan"],
["dog", "white"]]
}
'@
($text | ConvertFrom-Json).text |
% { Write-Host $_[0] -ForegroundColor $_[1] -NoNewLine }
虽然这可能非常乏味。也许检查 PSGallery 看看是否有任何处理彩色文本的包为您的应用程序提供方便的命令。
使用格式为以下的 PowerShell ANSI 转义序列:
$([char]0x1b)[#m
其中 #
代表一个数字。 (有关 ANSI 转义序列的更多信息,请参阅 here)
在上述问题的情况下,它看起来像这样: