2016-12-13 4 views
-1

Это часть моего большого кода.Разделение строки powershell версии 4?

Я не добавил ни одной сборки для этого. Я хочу получить «20161207» отдельно в другой переменной. Однако этот подход терпит неудачу: «синтаксический разбор» * «- квантификатор (x, y), следующий за ним».

[string]$filter = '20161207*' 
$pathPart = $filter -split '*' 

echo $pathPart[0] 

, пожалуйста, помогите. Я использую версию PowerShell 4.0. Я не уверен, что такое escape-символ в моей версии powershell. i Пробовал '/' Я хочу высказать свое мнение: '20161207'

ответ

7

Оператор -split использует регулярные выражения, а не литералы. Поскольку * является квантором в регулярных выражениях, то, что вы получили там, является недопустимым. Вы должны избежать этого:

$filter -split '\*' 

или использовать метод string.Split вместо:

$filter.Split('*') 

, который расщепляется на одиночные символы.

+0

Этот метод производит «20161207», а не «20161207». в конце есть пробел, который меня не интересует. –

+0

@RiteshThakur затем вызывается 'Trim' на выходе для удаления пробелов – Nkosi

+2

@RiteshThakur: пространство должно появляться только в том случае, если вы преобразовываете полученный массив обратно в строку (которая в ваше дело будет входить в первую часть и пустую строку с пробелом между ними), _or_, если у вас есть пробел перед символом разделения. Разделение в одиночку не будет волшебным образом создавать пробелы, но ваш другой код может. – Joey

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