我對 Powershell 完全陌生,我想知道檔案夾串列中是否包含語言代碼。我正在使用這個小腳本。
set-executionpolicy remotesigned -Scope CurrentUser
$path = "C:\Projects\Eg_Proyect\2022_834"
$lang = "DE-DE"
$Lsta2 = Get-ChildItem -Path $path -Name
$Lsta2
$Lsta2.Count
$Lsta2 -contains $lang
結果是:
0_SOURCE
10_EN-GB_PL
11_EN-GB_CS
12_EN-GB_DE-DE
13_EN-GB_TR
1_EN-GB_ES-ES
2__
3_EN-GB_IT-IT
4_EN-GB_IT-IT
5_EN-GB_HU
6_EN-GB_HU
7_EN-GB_NL-NL
8_EN-GB_NL-NL
9_EN-GB_PT-PT
14
**False**
為什么它不回傳 True?
uj5u.com熱心網友回復:
字串方法總是混淆,.Contains()它尋找帶有另一個字串的某個子字串和 PowerShell運算子,它在陣列-contains中尋找一個完整的、精確的(不區分大小寫的)專案。
因為在你的情況下你有一個字串陣列,你可以使用:
[bool]($Lsta2 -match 'DE-DE') # uses RegEx. returns True or False because of the cast to `[bool]`
或者
[bool]($Lsta2 -like '*DE-DE*') # uses WildCards ('*' and/or '?')
或.Contains()單獨對每個字串使用字串運算子。這當然是浪費時間,并且它可以區分大小寫,但要表明它可以做到:
[bool]($Lsta2 | ForEach-Object { if ($_.Contains('DE-DE')) { $true }})
uj5u.com熱心網友回復:
您可以使用-match字串中的正則運算式進行搜索
$Lsta2 -match $lang
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/418464.html
標籤:
