PowerShell Zerlegt einen String beim ersten Auftreten von Substring / Zeichen

8

Ich habe eine Saite, die ich in zwei Teile aufteilen möchte. Das erste Stück ist vor dem Komma ( , ) und das zweite Stück ist alles nach dem Komma (einschließlich der Kommas).

Ich habe bereits das erste Stück vor dem Komma in der Variablen $Header gefunden, aber ich weiß nicht, wie ich die Teile nach dem ersten comma in einer großen Zeichenfolge wiederherstellen soll, so dass es

enthält %Vor%

Möglicherweise ist hier mehr Text sichtbar als zB Text 5, Text 6, ..

%Vor%     
DarkLite1 19.08.2014, 12:19
quelle

4 Antworten

2

Versuchen Sie etwas wie:

%Vor%

Beim Teilen nach einem String verwenden Sie eine andere Signatur der Funktion split .

Die grundlegende Verwendung benötigt nur ein Argument, ein Trennzeichen (mehr Informationen dazu finden Sie hier , zum Beispiel). Um jedoch Zeichenfolgen zu verwenden, lautet die Signatur wie folgt:

%Vor%

Aus diesem Grund müssen Sie Ihre Zeichenfolge als String-Array darstellen. In diesem Fall verwenden wir die Option None , aber Sie finden die anderen verfügbaren Optionen in der Dokumentation split .

Schließlich, da der Wert von $Heasder, am Anfang von $String steht, müssen Sie das 2. Mitglied des resultierenden Arrays fangen.

    
Aserre 19.08.2014, 12:25
quelle
13

Der Operator -split von PowerShell unterstützt die Angabe der maximalen Anzahl von Teilzeichenfolgen, die zurückgegeben werden sollen, d. h. wie viele Teilzeichenfolgen zurückgegeben werden sollen. Geben Sie nach dem zu teilenden Muster die Anzahl der gewünschten Strings ein:

%Vor%     
Aaron Jensen 31.08.2014 20:14
quelle
0

Diese alternative Lösung nutzt die Fähigkeit von PowerShell, Arrays mit einer einzigen Zuweisung an mehrere Variablen zu verteilen. Beachten Sie jedoch, dass sich der Operator -split bei jedem Komma aufteilt und die von PowerShell integrierte Konvertierung von Array zurück in String dazu führt, dass die Elemente wieder verkettet werden. Es ist also nicht so effizient wie String.Split , aber in Ihrem Beispiel ist es vernachlässigbar.

%Vor%

Schließlich ist $OFS eine spezielle Variable in der PowerShell, die bestimmt, welches Zeichen verwendet wird, wenn die Array-Elemente in eine einzelne Zeichenfolge zurückgeführt werden. Standardmäßig ist es ein Leerzeichen. Aber es kann zu irgendetwas geändert werden.

    
Josh 20.08.2014 16:52
quelle
0

Methode von Aaron ist die beste, aber ich schlage meine Lösung vor

%Vor%     
Esperento57 28.01.2017 09:56
quelle

Tags und Links