編輯列表中的字符串我正在製作一個列錶框,該列錶框用於腳本中以選擇要分析的批號。 我想根據文件夾中的文件名列出批號。 我無法弄清楚如何將文件名僅編輯為批號。
這是文件名列表的樣子
"data_20229.csv", "data_20230.csv", "data_20231.csv", "data_20232.csv",
"data_20236.csv", "data_20237.csv", "data_20238.csv", "data_20239.csv",
"data_20240.csv", "data_20241.csv", "data_20242.csv", "data_20243.csv",
"data_20244.csv", "data_20245.csv", "data_20247.csv", "data_20248.csv",
"data_20251.csv", "data_20252.csv", "data_20253.csv", "data_20254.csv",
"data_20255.csv", "data_20256.csv", "data_20257.csv", "data_20258.csv",
"data_20259.csv", "data_20260.csv", "data_20261.csv", "data_20262.csv",
"data_20263.csv", "data_20264.csv", "data_20265.csv", "data_20266.csv",
"data_20267.csv", "data_20268.csv", "data_20269.csv", "data_20270.csv"
我希望列表最終像這樣
"20229", "20230", "20231", "20232", "20233", "20234", "20235", "20236",
"20237", "20238", "20239", "20240", "20241", "20242", "20243", "20244", "20245",
"20246", "20247", "20248", "20249", "20250", "20251", "20252", "20253", "20254",
"20255", "20256", "20257", "20258", "20259", "20260", "20261", "20262", "20263",
"20264", "20265", "20266", "20267", "20268", "20269", "20270"
腳本編寫回复:編輯列表中的字符串最簡單的方法是使用Word()函數。
Names Default To Here( 1 );
exampleList = {"data_20229.csv", "data_20230.csv", "data_20231.csv",
"data_20232.csv", "data_20236.csv", "data_20237.csv", "data_20238.csv",
"data_20239.csv", "data_20240.csv", "data_20241.csv", "data_20242.csv",
"data_20243.csv", "data_20244.csv", "data_20245.csv", "data_20247.csv",
"data_20248.csv", "data_20251.csv", "data_20252.csv", "data_20253.csv",
"data_20254.csv", "data_20255.csv", "data_20256.csv", "data_20257.csv",
"data_20258.csv", "data_20259.csv", "data_20260.csv", "data_20261.csv",
"data_20262.csv", "data_20263.csv", "data_20264.csv", "data_20265.csv",
"data_20266.csv", "data_20267.csv", "data_20268.csv", "data_20269.csv",
"data_20270.csv"};
For( i = 1, i <= N Items( exampleList ), i++,
exampleList[i] = Word( 2, exampleList[i], "_." )
);
show( exampleList );
可在腳本索引中找到有關Word()函數的文檔。
回复:編輯列表中的字符串謝謝,吉姆
出於此目的,Word函數是一種很好理解的函數。
甚至更通用的方法可能是使用正則表達式,
因此只需將一行Jims Script替換為
exampleList[i] = regex(exampleList[i], "([0-9]+)", "\1")
將搜索數字的首次出現。
當數據不是本示例中那樣乾淨時,這可能會很有用。 正則表達式功能強大。
回复:編輯列表中的字符串這種方法不使用for循環。
Names Default To Here( 1 );
exampleList = {"data_20229.csv", "data_20230.csv", "data_20231.csv",
"data_20232.csv", "data_20236.csv", "data_20237.csv", "data_20238.csv",
"data_20239.csv", "data_20240.csv", "data_20241.csv", "data_20242.csv",
"data_20243.csv", "data_20244.csv", "data_20245.csv", "data_20247.csv",
"data_20248.csv", "data_20251.csv", "data_20252.csv", "data_20253.csv",
"data_20254.csv", "data_20255.csv", "data_20256.csv", "data_20257.csv",
"data_20258.csv", "data_20259.csv", "data_20260.csv", "data_20261.csv",
"data_20262.csv", "data_20263.csv", "data_20264.csv", "data_20265.csv",
"data_20266.csv", "data_20267.csv", "data_20268.csv", "data_20269.csv",
"data_20270.csv"};
str = char(examplelist);
newstr = substitute(str, "data_", "", ".csv", "");
new_list = parse(newstr);
show( new_list );回复:編輯列表中的字符串謝謝喬治! 那真的很好。 我以前從未使用過正則表達式,因此我嘗試對其進行一些谷歌搜索來解決這一問題。 我在同一文件夾中確實有一些垃圾文件,其中沒有任何數字。因此這些文件的名稱不在列表中,而是句點。 我如何擺脫這個時期?
看起來像這樣{。,。,。,。,。,。,“ 20131”,“ 20132”,“ 20133”,}
回复:編輯列表中的字符串親愛的@ealindahl ,
句點屬於缺失值,即正則表達式未找到匹配項。
您可以刪除它們的後綴,或者在列表生成過程中避免使用它們,而必須稍微更改循環。
刪除它們後綴的簡單方法如下(第一種通過字符串Manipulation的方式,第二種通過循環的方式)。
BR
names default to here(1);
list = {., ., ., ., ., ., ., "20131", "20132", "20133"};
new_list = parse(substitute(char(list),".,", ""));
show (list);
show (new_list);
new_list={};
for (i=1, i<= n items(list), i++,
if (!is missing(list[i]), new_list = insert(new_list, list[i]));
);
show(new_list);