У меня есть строка, которую я разделил с помощью кода $CreateDT.Split(" ")
. Теперь я хочу по-разному управлять двумя отдельными строками. Как я могу разделить их на две переменные?
string
powershell
Davetherave
источник
источник
Ответы:
Как это?
$string = 'FirstPart SecondPart' $a,$b = $string.split(' ') $a $b
источник
"FirstPart SecondPart ThirdPart"
и вы хотите только двоих, можете использовать$a,$b = $string.split(' ')[0,1]
Массив создается
-split
оператором. Вот так,$myString="Four score and seven years ago" $arr = $myString -split ' ' $arr # Print output Four score and seven years ago
Когда вам нужен определенный элемент, используйте индекс массива, чтобы добраться до него. Учтите, что индекс начинается с нуля. Вот так,
$arr[2] # 3rd element and $arr[4] # 5th element years
источник
$arr = @($myString.split(' '))
$first_word = ("one-two-three" -split '-')[0]
.Split()
всегда возвращает массив, поэтому нет необходимости в@(...)
:,$arr = $myString.split(' ')
но обратите внимание, что более идиоматическое решение PowerShell$arr = $myString -split ' '
уже является частью ответа. Однако обратите внимание, что это-split
принимает регулярное выражение и не учитывает регистр (используйте-csplit
для разделения с учетом регистра).Важно отметить следующее различие между двумя методами:
$Str="This is the<BR />source string<BR />ALL RIGHT" $Str.Split("<BR />") This is the (multiple blank lines) source string (multiple blank lines) ALL IGHT $Str -Split("<BR />") This is the source string ALL RIGHT
Из этого видно, что
string.split()
метод :Пока
-split
оператор :источник
-split
в качестве (первого) операнда RHS используется регулярное выражение (регулярное выражение), тогда как[string]
тип.Split()
метод работает с буквальным символом / массивом символов / и - в .NET Core - также с буквальной строкой . Кроме того , обратите внимание , что правильный синтаксис в PowerShell является$Str -split '<BR />'
; в то время как синтаксис псевдо-метод$Str -Split("<BR />")
происходит с работой в этом случае, следует избегать.Попробуй это:
$Object = 'FirstPart SecondPart' | ConvertFrom-String -PropertyNames Val1, Val2 $Object.Val1 $Object.Val2
источник
ConvertFrom-String
он устарел, и его следует избегать (он всегда был экспериментальным, и тот факт, что он не был включен в PowerShell Core, где сосредоточены усилия по будущей разработке, указывает на то, что он не надолго). Что касается необходимости дополнительных манипуляций: подойдет деструктурирующее задание:$val1, $val2 = 'FirstPart SecondPart' -split ' '
ConvertFrom-String
«S врожденных проблем являются достаточной причиной , чтобы избежать этого. Это особенно относится к шаблону на основе синтаксического анализа, но даже разделителем на основе синтаксического анализа ошибочна, из - за типа вывода , который неизменно применяется - см stackoverflow.com/a/50166580/45375 .Оператор операции с каждым объектом:
$a,$b = 'hi.there' | foreach split . $a,$b hi there
источник