gpt4 book ai didi

javascript - 转换为换行符

转载 作者:行者123 更新时间:2023-11-30 14:47:18 27 4
gpt4 key购买 nike

我正在使用 powershell,并且有类似的东西

$testResult = vstest.console $myPathToUnitTests.dll

结果很好,但是有新行(换行符,如\n )。

我想在我的 HTML 文件中使用它,并将结果按原样保存到 javascript 文件中。

$testResult = vstest.console $myPathToUnitTests.dll
$js = "const result = $($testResult);"
$js | Set-Content $myPathToJsFile

这很好用,我可以使用它。

问题是,它不显示换行符。在我尝试过的 javascript 文件中

result = result.replace(/(?:\r\n|\r|\n)/g, '<br />');

在我尝试过的 powershell 中

 $testResult = $testResult.replace("\n", "<br />")

但是,如果我在 powershell ID 中的 testResult 上放置一个断点并将鼠标悬停在我看到的变量 testResult 上

enter image description here

这意味着它知道有新行/换行符。我只是似乎无法坚持他们:(

最佳答案

vstest.console $myPathToUnitTests.dll 返回一个array 而不是一个string 因此你需要加入所有字符串(行)连同 -join运算符,例如 html:

$TestResult -Join "<br />"

或者如果你想创建一个多行文本文件:

$TestResult -Join [System.Environment]::NewLine

注意:为此,我建议使用系统的默认换行符定义([System.Environment]::NewLine)而不是硬编码换行符(如:`r` n).

你怎么知道的?

您无法轻易预测未知的 cmdlet 或命令返回什么,但 PowerShell 非常擅长同时处理管道中的多个对象(数组),这是一个假设每个未知的 cmdlet 或命令都可以的理由分配给变量时,可能会返回收集在数组中的多个对象(或字符串)。不用说,已经有许多类似的 PowerShell StackOverflow 问题具有相同的原因。然而,相关问题本身差异太大,无法将它们标记为重复。在这些其他问题中, native PowerShell 命令 Get-Content 可能是此 PowerShell 编程陷阱的最常见原因。

找出未知 cmdlet 当前返回的内容的最佳方法是使用 GetType() 方法揭示其类型(该方法不适用于 $Null) 或使用 PSTypeNames 属性(通常返回继承类型的数组):

PS C:\> (get-content .\SingleLine.txt).PSTypeNames
System.String
System.Object

但这并不能保证它将始终返回相同的(单个)对象类型:

PS C:\> (get-content .\MultipleLines.txt).PSTypeNames
System.Object[]
System.Array
System.Object

事实上,(字符串)数组通常显示在多行(由 换行符 分隔)直接在它们存放在一起的主机上(由 空格 分隔) ) 当它们被封装在一个字符串中时,可能会触发识别问题:

PS C:\> $a = "a", "b", "c"
PS C:\> $a
a
b
c
PS C:\> "$a"
a b c
PS C:\>

像这样的东西总是会返回一个数组吗?

cmdlet 或命令可以返回对象(字符串)或对象数组(字符串)的不确定性确实引发了一个新问题(正如您评论的那样)。
这种不确定性在 PowerShell 中实际上很容易解决;只需将输出包装在一个数组中(在开头带有 @ 的括号中,另请参阅:How can I force Powershell to return an array when a call only returns one object?):

  • 如果输出还不是一个数组,它将变成一个包含单个对象(字符串)的数组
  • 如果输出已经是一个数组,它将保持完全相同的数组。

In the later condition it is important to understand that no extra levels are added to the resulting array

此技术常用于 PowerShell:

$a = "a", "b", "c"
@($a)[0] # still returns: "a"
@(@(@($a)))[0] # or even this returns: "a"

关于javascript - 转换为换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703261/

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