你好,
對於 JMP 中的腳本編寫,我有點新手,我正在嘗試編寫一個腳本,該腳本能夠從字串中提取特定數字並為每個數字創建新列。每個數字始終跟隨字元“DX”或“DY”例如:
D113U_NTCH_CM_MEAS_CD_SEM_{2UM_X6_NTCH_CM_IMAGE}_DX7DY11SDX11SDY15_2024-12-06_18-57-42.jpg
我想提取並創建這些列:

當然,我想對整列資料重複這個過程。我將不勝感激任何建議。謝謝!
您是否事先知道所有可能的模式(DX、DY、...)?它是否始終位於同一位置(在 }_ 之後且日期之前)?
如果我有一列充滿這些文件名,我會執行“列”->“重新編碼”,左上角的紅色三角形->“替換字串”,然後輸入“S?D[XY](\d+)”並替換為“ %\1%”,並開啟“使用正規表示式”。然後,您可以拆分列(Cols -> Utilities -> Text to Columns...”)並輸入“%”,這將為您提供6 個新列,其前綴為DX、DY、SDX、SDY 和後綴,例如:
| 第 1 欄 2 | 第 1 欄 3 | 第 1 欄 4 | 第 1 欄 5 | 第 1 欄 6 | 第 1 欄 7 |
| D113U_NTCH_CM_MEAS_CD_SEM_{2UM_X6_NTCH_CM_IMAGE}_ | 7 | 11 | 11 | 15 | _2024-12-06_18-57-42.jpg |
然後您可以將列重命名為 DX、DY 等。
如果您的真實數據更複雜,這個過程可能也需要更複雜一些。
這是一種替代方法。
給定數據表

下面的腳本將直接創建

Names Default To Here( 1 );
// Create and example data table
dt = New Table( "Example",
Add Rows( 1 ),
New Column( "File",
Character,
"Nominal",
Set Values(
{
"D113U_NTCH_CM_MEAS_CD_SEM_{2UM_X6_NTCH_CM_IMAGE}_DX7DY11SDX11SDY15_2024-12-06_18-57-42.jpg"
}
)
)
);
// Add the new columns to the data table
dt << New Column( "DX" );
dt << New Column( "DY" );
dt << New Column( "SDX" );
dt << New Column( "SDY" );
For Each Row(
// Separate the section of the File name into just the DX,DY,SDX,SDY part
string = Word( 1, Substr( :file, Contains( :file, "_DX" ) + 1 ), "_" );
// Change the string into a assignment statements
Substitute Into( string, "SDX", ";:SD_X=", "SDY", ";:SD_Y=", "DX", ";:D_X=", "DY", ";:D_Y=", "_", "" );
string = Substr( string, 2 ) || ";";
// Execute the assignment statements
Eval( Parse( string ) );
);