リスト内の文字列を編集する分析するバッチ番号を選択するためにスクリプトで使用するリストボックスを作成しています。 フォルダ内のファイル名に基づいてバッチ番号のリストを作成したいと思います。 ファイルの名前をバッチ番号だけに編集する方法がわかりません。
これはファイル名のリストがどのように見えるかです
"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"
スクリプティングRe:リスト内の文字列を編集するこれを行う最も簡単な方法は、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()関数に関するドキュメントは、ScriptingIndexにあります。
Re:リスト内の文字列を編集するありがとう、ジム。
単語関数は、そのような目的のための素晴らしくて理解しやすい関数です。
さらに一般的なアプローチは、正規表現を使用することです。
したがって、JimsScriptの1行を次のように置き換えるだけです。
exampleList[i] = regex(exampleList[i], "([0-9]+)", "\1")
番号の最初の出現を検索します。
これは、データがこの例のようにクリーンでない場合に役立つことがあります。 正規表現は非常に強力です。
Re:リスト内の文字列を編集するこのアプローチでは、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 );Re:リスト内の文字列を編集するゲオルクありがとう! それは本当にうまくいきます。 私はこれまで正規表現を使用したことがなく、この1つの問題を解決するために正規表現をグーグルで検索しようとしました。 同じフォルダに番号のないジャンクファイルがいくつかあります。したがって、これらのファイルの名前はリストに含まれていませんが、ピリオドは含まれています。 どうすれば生理を取り除くことができますか?
このようになります{。、。、。、。、。、。、。、 "20131"、 "20132"、 "20133"、}
Re:リスト内の文字列を編集する親愛な@ealindahl 、
ピリオドは欠落した値に属します。つまり、正規表現は一致するものを見つけられませんでした。
あとがきを削除するか、リスト生成中にそれらを回避することができ、ループをわずかに変更する必要があります。
あとがきを削除する簡単な方法は次のとおりです(最初の方法は文字列操作、2番目の方法はループスルー)。
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);