【发布时间】:2019-02-21 05:50:26
【问题描述】:
我对变量感到困惑。
我有代码,其中有以下行:
$search = $Name.SelectedItem.Split('-')[$($Name.SelectedItem.Split('-').Count-1)]+'*'
这一行没有做任何其他事情,因为拆分了一个选定的项目(我正在使用下拉框)并将其传输到 $search。
有趣的是,它正是我想要它做的事情。
当我输入 $search 时,结果可以是例如:
里沃利街*
当我在代码中继续并通过几个数组使用 $search 时,由于某种原因,它不起作用,因为它在 foreach 循环中找不到任何东西。我没有错误消息,即使其中一个阵列中存在 Rue de Rivoli*,它也没有找到任何东西。
当我替换上面的代码并直接给变量$search命名时,如下所示
$search = 'Rue de Rivoli*'
我在数组中的搜索有效。
我在这里缺少什么?我做错了什么,但我不知道是什么,有人可以帮助我理解吗?
非常感谢,
迈克
根据要求,这里有更多代码。有很多东西要处理,所以我把它缩短了。
Clear-Host
$search = $CreateNewUserFormDropDownBoxLocation.SelectedItem.Split('-')[$($CreateNewUserFormDropDownBoxLocation.SelectedItem.Split('-').Count-1)]+'*'
#$search = 'Rue de Rivoli*'
$AllLocations = (get-variable -Include USPennsylvaniaAve, USSixthStreet, USRodeoDrive, USOneMicrosoftWay,`
USNorthTantauAvenue, USMarketStreet, USMainStreet, USEmilyDrive,`
USCalle8, USBroadway, US18thStreetNW, UKOxfordStreet, UKDowningStreet,`
UKBondStreet, FRRuedeRivoli, FRChampsElysees, CHBahnhofstrasse,`
CA17thAvenue) | ? {$_.value -is [array]}
Foreach ($Array in $AllLocations)
{
if ($array.value -like $search)
{break}
}
$result = "`$$($array.name)"
$result
这将成为一个函数,没有其他任何作用,因为从选定的项目中,它把它拆开并在它后面添加*,所以我可以搜索 带有通配符的名称。
我有几个数组,因此我只包含了必要的数组。下一步是遍历数组,一旦找到该项目,它就会停止并将结果提供给结果。 这是我的测试代码,它运行并执行我想要的,除了 Clear-Host 之后的行。该代码已正确解析并添加到 $search 但不起作用。 在该行代码下方,我有我的作弊行,我直接将正确的结果添加到变量中,它工作正常。
【问题讨论】:
-
需要更多有关数组的信息并向您展示一段代码。请编辑问题并提供所有必要的信息。
-
你好 Ranadip,谢谢,我可以给数组,没问题但都是大代码的一部分,所以太多了,所以我把它缩短了。
-
是的,也需要理解您的代码。因此,如果没有最少的可验证代码,就很难隔离问题。
-
您是否尝试过使用
[-1]获取最后一个变量而不是重新键入它?或者使用$search = ... ; $search[$search.count-1]将该行分成两部分以使其更具可读性并没有错。 *只是对代码的建议,而不是答案 -
哦,请原谅我。在编码方面,我完全是新手。这是我的一个小项目,如有任何错误,请见谅,我努力理解并遵循编码规则,但这并不容易,非常尊重你们。
标签: powershell variables