檔案名列中未知字元數之間的子字串當我輸入資料時,我最終得到一個文件名列,如下所示:
| 檔案名稱 |
| 測試名稱 日期 ID# 晶圓和裝置 ID1 #ID 註釋 |
| 測試名稱 日期 ID# 晶圓和裝置 ID2 #ID 不同註釋 |
| 不同的測試名稱 日期 ID# 晶圓和裝置 ID1 #ID 註釋 |
| 不同的測試名稱 日期 ID# 晶圓和裝置 ID2 #ID 不同註釋 |
我想要的是以下內容:
| 檔案名稱 |
| 晶圓和裝置 ID1 |
| 晶圓和裝置 ID2 |
| 晶圓和裝置 ID1 |
| 晶圓和裝置 ID2 |
所有這些都有不同的分隔符號和字串長度,我想要做的是使用“ID#”和“#ID”字元減去空格來提取晶圓和設備 ID。我找到了很多有關取出特定數量字符的信息,但我很難找到有關搜索字符串和從左側刪除字符串(在本例中為“ID#”以及之前的所有內容)和a的任何信息字符串(在本例中為“#ID”及其後的所有內容),並將字串留在中間。
預先感謝您的幫忙。
進階統計建模資料混合與清理大規模客製化品質和工藝工程回复:未知字符數之間的文件名列的子字符串Word() 函數可以輕鬆做到這一點。
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:File Name = Word( 1, :File Name, "#" )
);
回复:未知字符數之間的文件名列的子字符串吉姆,
剛才我確實嘗試過這種方法。 它最終會刪除第一個“#”字符之後的所有內容。 所以現在我為每一行得到這個:
測試名稱 日期 ID
看起來使用 munger 或 substr 是可能的,但我也沒有讓它工作。
回复:未知字符數之間的文件名列的子字符串哎呀....只需更改以提取第二個單詞
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:File Name = Word( 2, :File Name, "#" )
);
請花時間閱讀腳本索引中的 Word() 函數。它將顯示每個元素可以是什麼,以及它如何工作的示例。
回复:未知字符數之間的文件名列的子字符串當提取很簡單時,我喜歡使用 Word() 函數。 這是使用 Regex() 函數的另一種方法。 如果提取模式不簡單,可以使用相同的方法,只需更改正則表達式即可。
Names Default to Here( 1 );
// set up example
dt = New Table( "Untitled",
Add Rows( 4 ),
New Column( "File Name",
Character,
"Nominal",
Set Values(
{"Test Name Date ID# Wafer and Device ID1 #ID comment",
"Test Name Date ID# Wafer and Device ID2 #ID different comment",
"Different Test Name Date ID# Wafer and Device ID1 #ID comment",
"Different Test Name Date ID# Wafer and Device ID2 #ID different comment"
}
)
)
);
// make a data column for result
dt << New Column( "Extract", "Character", "Nominal" );
// compute row-wise result
For Each Row(
:Extract = Regex( :File Name, "ID# (.+) #ID", "\1" );
);
這是結果:
