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