セル内の値をチェックし、7 番目の文字がある場合はそれを削除する JSL FOR ループ以下のこのスニペットは私のスクリプトの一部です。 この時点でデータ テーブルがあり、さまざまな行のセルの一部の 7 番目の位置に特別な特殊文字が含まれています...そうです、奇妙なデータセットです。 そうしない人もいます。 複数の行と複数の列があり、その数はすべて異なる場合があります。
そこで、FOR ループを使用して各行と列の各セルの値を確認し、8 番目の文字がある場合はそれをトリミングまたは削除します。 実際、スクリプトでは left(dt,7) を実行するだけで済みます。私はそれで満足です。 ただし、GETVALUES 関数を使用すると、その列のセル値が行列に配置され、左トリムの方法がわからないため、私がいる場所は行き詰まっています。 代わりに GETVALUES を削除して各行を個別にループすると、値を適切にトリミングできますが、新しい値をセルに強制的に入れる方法がわかりません。 以下のスクリプトには両方の方法を含めました。
//Loop to delete the closing crazy characters from each row, it is always the 7th character that needs to be removed.
For(n = 1, n <= ncol(dtWAPFile), n++,
colname = Column(n) << get name;
For( k = 1, k <= N Rows( dtWAPFile ), k++,
RowVal = dtWAPFile:colname << GetValues; //This gets a matrix
NewRowVal = Left(RowVal,6); //This doesn't work with the matrix
dtWAPFile:colname << setvalues(NewRowVal);//This doesn't work...
); For(n = 1, n <= ncol(dtWAPFile), n++,
colname = Column(n) << get name;
For( k = 1, k <= N Rows( dtWAPFile ), k++,
RowVal = dtWAPFile:colname[k]; //This gets the value for a row/column based on the loop
NewRowVal = Left(RowVal,6); //This trims the value
RowVal = setvalues(NewRowVal);//This doesn't work...can't seem to stuff it back in..
);
Re: セル内の値をチェックし、7 番目の文字がある場合は削除する JSL FOR ループ働きました。 みんなありがとう! ところで、私はこのフォーラムが大好きです、皆さんは素晴らしいので、私を仕事で良く見せてくれます:)Re: セル内の値をチェックし、7 番目の文字がある場合は削除する JSL FOR ループJim のコードを少し調整します。
NamesDefaultToHere(1);
// Test Table
dt = New Table( "Test",
Add Rows( 4 ),
New Column( "Column 1",
Character,
"Nominal",
Set Values( {"123456", "1234567", "12345678", "1234"} )
),
New Column( "Column 2",
Character,
"Nominal",
Set Values( {"123456789", "123", "123456", "1234567"} )
)
);
// Truncate each cell to the leftmost six characters
Wait(3);
cols = dt << getColumnNames("String");
for(c=1, c<=NItems(cols), c++,
for(r=1, r<=NRow(dt), r++,
Column(dt, cols[c])[r] = Left(Column(dt, cols[c])[r], 6);
);
);Re: セル内の値をチェックし、7 番目の文字がある場合は削除する JSL FOR ループ私はそれを理解できませんでしたが、回避策を見つけました。 何らかの理由で、コードをステップ実行すると機能するのですが、スニペット全体を実行すると機能しません...奇妙です。
最終的には、最初の FOR ループを削除し、最初の FOR ループ内に 2 番目の FOR ループを埋め込まないようにする必要がありました。単純なミスだったらいいのですが、そこにたどり着くことができず、時間が足りませんでした。
Re: セル内の値をチェックし、7 番目の文字がある場合は削除する JSL FOR ループOK....つまり、コードをあまりうまくテストできませんでした....というか、実際には本当にテストできませんでした。:-(
わかってくれてよかった
Re: セル内の値をチェックし、7 番目の文字がある場合は削除する JSL FOR ループコードをステップ実行してループをバイパスすると、機能します。
Re: セル内の値をチェックし、7 番目の文字がある場合は削除する JSL FOR ループエラー (下記) が発生しますが、難しすぎると聞いて気に入っています。 願わくば、もうすぐです。
In the following script, error marked by /*###*/
For( n = 1, n <= N Col( dtWAPFile ), n++,
colname = Column( n ) << get name;
For( k = 1, k <= N Rows( dtWAPFile ), k++,
Column( dtWAPFile, n )[k] = Left( Column( dtWAPFile, n )[/*###*/k], 6 )
);
)
Re: セル内の値をチェックし、7 番目の文字がある場合は削除する JSL FOR ループ頑張りすぎていると思います。 この頌歌はうまくいくはずだ
For( n = 1, n <= N Col( dtWAPFile ), n++,
colname = Column( n ) << get name;
For( k = 1, k <= N Rows( dtWAPFile ), k++,
Column( dtWAPFile, n )[k] = Left( Column( dtWAPFile, n )[k], 6 )
);
);