【发布时间】:2022-01-01 06:13:59
【问题描述】:
这里我有 2 个变量:$repo 和 $growth_repo_name_list。这是每个的输出:
> $repo
growth_medicare_consumertargetinganalyzer
> $growth_repo_name_list
2021.2
growth_ifp_consumersummary_v2
growth_ifp_consumertargetinganalyzer
growth_medicare_all_usconsumerattributes
growth_medicare_consumersummary_v2
growth_medicare_consumertargetinganalyzer
growth_medicare_growthopportunityindex
growth_medicare_ifp_all_usconsumerattributes
growth_medicare_ntmtargetinganalyzer
marketintel_medicare_historicalenrollmentanalyzer
marketintel_medicare_planbenefits
memberintel_ifp_aepoepreporting_v2
memberintel_ifp_memberreporting_v2
memberintel_medicaid_memberreporting_v2
memberintel_medicare_aepoepreporting_v2
memberintel_medicare_memberreporting_v2
$repo 是一个字符串,$growth_repo_name_list 是一个字符串数组:
> $repo.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
> $growth_repo_name_list.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
$repo 没有隐藏字符,如下代码的输出所示:
> [System.Text.Encoding]::UTF8.GetBytes($repo)
103
114
111
119
116
104
95
109
101
100
105
99
97
114
101
95
99
111
110
115
117
109
101
114
116
97
114
103
101
116
105
110
103
97
110
97
108
121
122
101
114
> [System.Text.Encoding]::UTF8.GetBytes($growth_repo_name_list[5])
103
114
111
119
116
104
95
109
101
100
105
99
97
114
101
95
99
111
110
115
117
109
101
114
116
97
114
103
101
116
105
110
103
97
110
97
108
121
122
101
114
即使我通过双引号将数组转换为扁平字符串,它仍然返回False:
> "$growth_repo_name_list"
2021.2 growth_ifp_consumersummary_v2 growth_ifp_consumertargetinganalyzer growth_medicare_all_usconsumerattributes growth_medicare_consumersummary_v2 growth_medicare_consumertargetinganalyzer growth_medicare_growthopportunityindex growth_medicare_ifp_all_usconsumerattributes growth_medicare_ntmtargetinganalyzer marketintel_medicare_historicalenrollmentanalyzer marketintel_medicare_planbenefits memberintel_ifp_aepoepreporting_v2 memberintel_ifp_memberreporting_v2 memberintel_medicaid_memberreporting_v2 memberintel_medicare_aepoepreporting_v2 memberintel_medicare_memberreporting_v2
> $ph = "$growth_repo_name_list"
> $repo -like $ph
False
> $ph.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
我在这里做错了什么?比较的结果应该是True,因为$repo 包含的字符串在列表$growth_repo_name_list 中。提前感谢您的帮助。
【问题讨论】:
-
-like需要通配符。你的目标是什么?测试$repo是否可以在数组$growth_repo_name_list中找到?那就试试$growth_repo_name_list -contains $repo -
您确定不要
$growth_repo_name_list -contains $repo? -
$repo = '*growth_medicare_consumertargetinganalyzer*'?
标签: arrays string powershell substring string-comparison