【发布时间】:2017-07-02 02:53:08
【问题描述】:
$a = {aa
bb
cc}
$a = $a -split "`n"
$a -contains "aa"
当字符串“aa”似乎是列表的一部分时,这将返回 false。为什么是这样?
【问题讨论】:
-
尽管您的问题看起来很明显,但它会帮助您对其进行编辑以便进一步阐述;你想达到什么目标,等等。
-
你到底为什么要拆分一个脚本块? (提示:您是交互式 shell 中的程序员。PowerShell 在返回 false 时没有说谎,这意味着
aa不是列表的一部分,这意味着您应该查看列表包含的内容。($a -split "`n")[0].Length=>3例如) -
-Contains 是一个列表运算符(列表是否包含项目)。您希望 -like、-match 或 .Contains()(一种字符串方法)执行您要查找的操作。
-
@MikeShepard:OP 使用转换为 多行字符串 的 脚本块 是不寻常的,但代码确实可以作为-is 如果脚本块是在常规控制台中定义的(它使用 LF-only 行结尾) - 粘贴它并执行它以查看。相比之下,如果代码是在使用 CRLF 行尾的脚本中定义的,则它将不起作用。
-
@mklement0 - 我应该学会更仔细地阅读人们的代码。我看到 string 和 -contains 并得出结论(通常是正确的)他们使用了错误的运算符。
标签: powershell