Как получить подстроку из определенного шаблона - PullRequest
1 голос
/ 05 ноября 2019

У меня есть массив строковых значений, таких как $dirSourceFolder = "$DeliveryStore\BBG\Port". Отсюда я просто хочу извлечь BBG.

У нас могут быть разные значения, такие как $directoryServices = "$DeliveryStore\BBG", $ddS ="$DeliveryStore\BBG\Port\Function\CDE", но $DeliveryStore\ всегда будет общим.

Также в каждом случае мне просто нужно BBG.

Я пробовал это с помощью IndexOf, но я не могу получить результаты. Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 05 ноября 2019

Это может работать:

($dirSourceFolder -split "\\")[1]
0 голосов
/ 05 ноября 2019

Вы также можете поиграть с Regex:

$substring = if ($dirSourceFolder -match '\\?(BBG)\\?') { $matches[1] }

Или (с учетом регистра)

$substring = [regex]::Match($dirSourceFolder, '\\?(BBG)\\?').Groups[1].Value

Или так же, как указано выше, но теперь без учета регистра

$caseInsensitive = [System.Text.RegularExpressions.RegexOptions]::IgnoreCase
$substring = [regex]::Match($dirSourceFolder, '\\?(bbg)\\?', $caseInsensitive).Groups[1].Value

Все будут выводить

BBG

PS с использованием IndexOf также будет работать, но требует больше усилий:

$index = $dirSourceFolder.IndexOf('\BBG\')  #'# include the backslashes
if ($index -ge 0) { 
    $substring = $dirSourceFolder.Substring($index + 1, 'BBG'.Length)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...