我有一個帶有逗號分隔數字的字串變數,我想將其拆分為四個數字變數。
| makeArr | 變種1a | 變數1b | var1c | var1d |
|---|---|---|---|---|
| 6,8,13,10 | 6 | 8 | 13 | 10 |
| 10,11,2 | 10 | 11 | 2 | |
| 7,1,14,3 | 7 | 1 | 14 | 3 |
和:
IF (CHAR.INDEX(makeArr,',') >= 1)
f12a=CHAR.SUBSTR(makeArr,1,CHAR.INDEX(makeArr,',')-1).
EXECUTE.
IF (CHAR.INDEX(makeArr,',') >= 1)
f12b=CHAR.SUBSTR(makeArr,CHAR.INDEX(makeArr,',') 1,CHAR.INDEX(makeArr,',')-1).
EXECUTE.
我總是能毫無問題地寫出第一個變數。這不再適用于第二個變數,因為它具有不同的長度,并且逗號也寫在這里。
因此,我需要在逗號處進行拆分,并將數字除以逗號。
uj5u.com熱心網友回復:
由于char.substr只會告訴您搜索字串第一次出現的位置,因此您需要從新位置開始第二次搜索 - 在第一次出現之后,隨著您的繼續,這會變得越來越復雜。我的建議是創建陣列變數的副本,您將在繼續進行時將其切掉 - 這樣您每次只搜索“,”的第一次出現。
首先,我重新創建您的示例資料以進行演示。
data list free/makeArr (a20).
begin data
"6,8,13,10" "10,11,2" "7,1,14,3"
end data.
現在我將您的陣列復制到一個新變數#tmp中。請注意,我在末尾添加了一個“,”,因此陣列的所有部分的語法都保持不變。我在名稱的開頭添加了“#”以使其不可見,您可以根據需要將其洗掉。
可以像您開始做的那樣逐步執行以下計算,但更好地回圈執行這些步驟(特別是如果這是一個較長陣列的示例)。
string f12a f12b f12c f12d #tmp (a20).
compute #tmp=concat(rtrim(makeArr),",").
do repeat nwvr=f12a f12b f12c f12d.
do IF #tmp<>"".
compute nwvr=CHAR.SUBSTR(#tmp,1,CHAR.INDEX(#tmp,',')-1).
compute #tmp=CHAR.SUBSTR(#tmp,CHAR.INDEX(#tmp,',') 1).
end if.
end repeat.
EXECUTE.
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/437193.html
