编辑列表中的字符串我正在制作一个列表框,该列表框用于脚本中以选择要分析的批号。 我想根据文件夹中的文件名列出批号。 我无法弄清楚如何将文件名仅编辑为批号。
这是文件名列表的样子
"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);