2016-07-11 76 views
-2

我實際上正在編碼器/解碼器。現在我必須將數字組與其他數字組分開。數字組的長度是未知的,但我知道它們被「」(空格字符)分隔。我不知道如何繼續,但我可以用僞代碼解釋我的意願:在Windows中分割字符串的可變長度批量

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

基本上,我想提取單個數組中的組。這可能嗎? 我嘗試了很多定義標記的方法,但是我的系統完全不同。

+1

看看這個堆棧溢出與搜索詞[\ [批處理文件\]拆分字符串](http://stackoverflow.com/search?q=%5Bbatch-file%5D+split+string)。正如你可以看到這是第一次沒有問。對於一個以空格作爲分隔符的字符串,你只需要命令__FOR__。在命令提示符窗口中運行for /?'以獲得有關此命令的幫助。 – Mofi

+0

使用PowerShell而不是嘗試在shell腳本(批處理)中執行此操作。 PowerShell具有對子串的本地字符串支持,對數組和結構化語言循環語句的內置支持。 –

+0

對不起,但1)我的系統是不同的2)你發佈的可能的解決方案是不工作3)我使用批次而不是PowerShell。 –

回答

0

正如Mofi已經指出的那樣,一個簡單的for就可以做到。添加一個計數器爲每個「單詞」(數組)創建一個變量。無論他們是真實的單詞還是數字都無所謂,但是一些特殊字符會產生錯誤,如&,|或者只是被忽略,如%,!)。

@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

非常感謝Stephan –