我正在嘗試拆分串列中的一些串列元素。
我想列出以下內容:
前列: {{aa, bb, cc, dd, ee;} {ff, gg, hh, ii, jj;}}
到:
后名單: {aa bb cc dd ee ff gg hh ii jj}
我試圖通過使用 split 命令來處理它們,但beforelist有一些棘手的問題:逗號、分號。
uj5u.com熱心網友回復:
幾種方式:
#!/usr/bin/env tclsh
set beforelist {{aa, bb, cc, dd, ee;} {ff, gg, hh, ii, jj;}}
# Iterate over each element of each list in beforelist and remove
# trailing commas and semicolons before appending to afterlist
set afterlist {}
foreach sublist $beforelist {
foreach elem $sublist {
lappend afterlist [regsub {[,;]$} $elem ""]
}
}
puts "{$afterlist}"
# Remove all commas and semicolons at the end of a word followed by space
# or close brace, then append sublists to afterlist.
set afterlist {}
foreach sublist [regsub -all {\M[,;](?=[ \}])} $beforelist ""] {
lappend afterlist {*}$sublist
}
puts "{$afterlist}"
uj5u.com熱心網友回復:
這不一定是使用串列解決的問題。保持字串操作:
% set beforeList {{aa, bb, cc, dd, ee;} {ff, gg, hh, ii, jj;}}
{aa, bb, cc, dd, ee;} {ff, gg, hh, ii, jj;}
% string map {\{ "" \} "" \; "" , ""} $beforeList
aa bb cc dd ee ff gg hh ii jj
uj5u.com熱心網友回復:
如果我們洗掉標點符號,我們會留下 2 個可以連接的串列
set afterlist [concat {*}[string map {, "" ; ""} $beforelist]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/335403.html
