2015-12-30 2 views
1

Я хочу проверить, существует ли элемент в массиве.Я хочу проверить, существует ли элемент в массиве

$data = "100400296 676100 582" 
$i = "18320-my-turn-582" 
if ($data -like $i) { Write-Host "Exist" } 
else { Write-Host "Didn't exist" } 

Этот пример не работает, как будто я хочу его. $i содержит 582, поэтому я хочу, чтобы это было Exist.

ответ

3

Ваша строка "18320-my-turn-582" не существует в $data, хотя обе строки содержат подстроку 582.

PowerShell обрабатывает ваши строки в целом, а нет в 100400296 676100 582. Чтобы обойти эту проблему вы можете:

Использование Regex:

$i -match '\d+$' 
$data -match $Matches[0] 

Разделить $i на дефис, так что вы будете иметь:

$i = $i -split '-' 
# turns $i into a array with the elements: 
# 18320 
# my 
# turn 
# 582 

$data -match $i[-1] 
# Output: 100400296 676100 582 

Заканчивать Get-Help about_Comparison_Operators, чтобы понять разницу между -Contains, -Match и -Like операторов.

+0

Большое спасибо, прочитаю эту ссылку, я очень хочу использовать Powershell –

Смежные вопросы