2016-07-11 7 views
-2

Ich arbeite tatsächlich an einem Kodierer/Dekodierer. Jetzt muss ich numerische Gruppen von anderen trennen. Die Länge der numerischen Gruppen ist unbekannt, aber ich weiß, dass sie durch "" (ein Leerzeichen) geteilt sind. Ich weiß nicht, wie es weitergehen, aber ich kann meinen Willen mit einem Pseudo-Code erklären:Split String mit variabler Länge in Windows Batch

for x-times (maybe the maximum, like 128) (
group[index] = the first part of the string until " " 
string = string minus the first part until " " 
) 

Grundsätzlich mag ich in einem einzigen Array, die Gruppen extrahieren. Ist das möglich? Ich habe viele Methoden mit definierten Token ausprobiert, aber mein System ist komplett anders.

+1

Blick auf diesem Stack-Überlauf mit Suchbegriff [\ [Batch-Datei \] geteilt string] (http://stackoverflow.com/search?q=%5Bbatch-file%5D+split+string). Wie Sie sehen können, wurde dies beim ersten Mal nicht gefragt. Für eine Zeichenfolge mit Leerzeichen als Trennzeichen benötigen Sie nur den Befehl __FOR__. Führen Sie in einem Eingabeaufforderungsfenster 'for /?' Für Hilfe zu diesem Befehl. – Mofi

+0

Verwenden Sie PowerShell, anstatt dies im Shell-Skript (Batch) zu versuchen. PowerShell bietet Unterstützung für native Zeichenfolgen mit Teilzeichenfolge, integrierte Unterstützung für Arrays und Schleifenanweisungen in strukturierter Sprache. –

+0

Sorry, aber 1) mein System ist anders 2) die mögliche Lösung, die Sie gepostet haben, funktioniert nicht 3) Ich benutze Batch nicht Powershell. –

Antwort

0

Wie Mofi bereits bemerkt hat, wird eine einfache for den Trick machen. Fügen Sie einen Zähler hinzu, um eine Variable für jedes "Wort" (Array) zu erstellen. Ob sie echte Wörter oder Zahlen sind, spielt keine Rolle, aber einige spezielle Zeichen erzeugen Fehler, wie &, | oder einfach ignoriert werden, wie %, !).

@echo off 
setlocal enabledelayedexpansion 
set count=0 
set "string=some substrings with variable lengths separated by space" 
for %%a in (%string%) do (
    set /a count+=1 
    set substring[!count!]=%%a 
) 
set substring[ 
+0

Vielen Dank Stephan –