PowerShell .split és csatolja miközben osztott méret

szavazat
1

Szia a kérdésem, hogyan tudom tartani a formátumot egy string, amely nem volt a .split fut rajta. Amit akarok

$test=a.b.c.d.e
$test2=abc
#split test
#append split to test2
#desired output
abc
a
b
c
d
e

Tudom, hogy ha végre osztott egy húr, mint

$test=a.b.c.d.e
$splittest=$test.split(.)
$splittest
#output
a
b
c
d
e

Azonban, amikor megpróbálom, hogy úgy, hogy szeretnék hozzáfűzni a fenti osztott egy húr

$test2=abc
$test2+$splittest
#output
abca b c d e

míg

$splittest+$abc
#output
a
b
c
d
e
abc

Van egy módja annak, hogy csatolja az osztott húr másik húr, miközben ez a törés méret vagy a jövőben azt kell foreach ciklus segítségével az osztott húr, és fűzze a $ test2 húr egyesével.

foreach ($line in $splittest)
{
$test2=$($test2)`n$(splittest)
}

Inkább nem használja a foreach módszer, hiszen úgy tűnik, hogy lassítson egy script dolgozom, amely előírja a szöveget meg kell osztani és a csatolt több mint 500 ezer alkalommal a kis végén.

A kérdést 29/12/2016 17:52
felhasználó
Más nyelveken...                            


1 válasz

szavazat
2

Amit lát, az a hatása, hogy hogyan PowerShell üzemeltetőjének túlterhelés felbontás.

Amikor PowerShell látja +, hogy kell eldönteni, hogy +azt az összeget ( 1 + 1 = 2), Concatenate ( 1 + 1 = "11"), vagy add ( 1 + 1 = [1,1]) az adott kontextusban.

Teszi ezt oly módon nézi a típusát a bal oldali argumentum, és megpróbálja átalakítani a jobb oldali argumentum típusát, hogy a kiválasztott operátor túlterhelés elvárja.

Amikor használja +a sorrendben van szüksége, akkor a karakterlánc érték, hogy a bal oldalon, és így az eredmény egy szövegösszefűzés működését.

Számos módja van annak az elé írott a húr a meglévő tömböt:

# Convert scalar to array before +
$newarray = @($abc) + $splittest

# Flatten items inside an array subexpression
$newarray = @($abc;$splittest)

Most már csak annyit kell tennie, hogy csatlakozzon a húrok egy újsor:

$newarray -join [System.Environment]::NewLine

Vagy meg lehet változtatni a kimeneti mezôelválasztót ( $OFS) egy új sort, és csatlakozott hallgatólagosan:

$OFS = [System.Environment]::NewLine
"$newarray"

Végül pedig, cső, hogy a tömb Out-String, de ez majd egy soremelést, hogy az egész szöveget:

@($abc;$splittest) |Out-String
Válaszolt 29/12/2016 20:20
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more