ファイル名列の不明な文字数の間の部分文字列データを入力すると、ファイル名の列は次のようになります。
| ファイル名 |
| テスト名 日付 ID# ウェーハとデバイス ID1 #ID コメント |
| テスト名 日付 ID# ウェーハとデバイス ID2 #IDが異なるコメント |
| 異なるテスト名 日付 ID# ウェーハとデバイス ID1 #ID コメント |
| 異なるテスト名 日付 ID# ウェーハとデバイス ID2 #ID 異なるコメント |
私が欲しいのは次のものです:
| ファイル名 |
| ウェーハおよびデバイス ID1 |
| ウェーハおよびデバイス ID2 |
| ウェーハおよびデバイス ID1 |
| ウェーハおよびデバイス ID2 |
これらはすべて区切り文字と文字列の長さが異なります。私がやりたいのは、スペースを除いた「ID#」と「#ID」の文字を使用して、ウェハーとデバイス ID を抽出することです。特定の数の文字を取り出す方法については多くの情報を見つけていますが、文字列を検索して、左側から文字列 (この場合は「ID#」とそれより前のすべて) を削除し、右側から文字列 (この場合は「#ID」とそれより後のすべて) を削除して、文字列を中央に残す方法については、なかなか情報を見つけることができません。
ご協力をよろしくお願いいたします。
高度な統計モデリングデータのブレンドとクリーンアップ大量カスタマイズ品質およびプロセスエンジニアリングRe: 不明な文字数の間のファイル名列の部分文字列Word() 関数はこれを簡単に行うことができます。
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:File Name = Word( 1, :File Name, "#" )
);
Re: 不明な文字数の間のファイル名列の部分文字列ジム、
私はこの方法をすでに何度も試しました。 最初の「#」文字の後のすべてを削除してしまいます。 だから今、私は各行のためにこれを取得しています:
テスト名 日付 ID
munger または substr を使用して可能であるように見えますが、それも機能していません。
Re: 不明な文字数の間のファイル名列の部分文字列おっと....2番目の単語を抽出するように変更するだけです
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
:File Name = Word( 2, :File Name, "#" )
);
Scripting Index で Word() 関数について読んでください。各要素が何であるか、およびそれがどのように機能するかの例を示します。
Re: 不明な文字数の間のファイル名列の部分文字列抽出が単純な場合は、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" );
);
結果は次のとおりです。
