Re: 文字列に重複文字があるかどうかを判断して抽出するにはどうすればよいですか?重複を削除する 1 つの方法は次のとおりです
theList = Words( "abp-g5.GAIV_0099_P013_GAIV_0099_P013", "_." );
For( i = N Items( theList ), i >= 1, i--,
If( N Rows( Loc( theList, theList[i] ) ) > 1,
Remove From( theList, i, 1 )
)
);
newName = theList[1] || "." || theList[2];
For( i = 3, i <= N Items( theList ), i++,
newName = newName || "_" || theList[i]
);
Re: 文字列に重複文字があるかどうかを判断して抽出するにはどうすればよいですか?いくつかの質問:
- あなたは「言葉」とは何だと思いますか? 「_」と「.」で区切られたものはありますか?
- 重複が複数ある場合はどうしますか? 全て抽出/最短のみ/最長のみ/なし?
- 重複は文字列内の任意の位置で発生する可能性がありますか? 重複した部分は常に最後にありますか?
Re: 文字列に重複文字があるかどうかを判断して抽出するにはどうすればよいですか?ありがとう、あなたの方法はとても良いです!
Re: 文字列に重複文字があるかどうかを判断して抽出するにはどうすればよいですか?ありがとう、確かにこれは実際的な問題です::
この文字に GAI がある場合は、何度出現しても、繰り返し出現するたびに、その文字で始まる文字の 1 つを抽出します。
そして間違いなく重複が存在します。
Re: 文字列に重複文字があるかどうかを判断して抽出するにはどうすればよいですか?これは興味深い質問です。 好き@txnelsonさんの解決策。 彼のアプローチに加えて、この状況では正規表現が便利であるため、別の方法をここに示します。
提供されている 2 つの例には、次のパターンがあります。
- 「abp-g5」などのプレフィックスが存在する場合があります。
- 目的の文字列がプレフィックスの後に続きます
- 繰り返される/重複する文字が目的の文字列と正確に一致する
- 繰り返される/重複する文字はアンダースコアで目的の文字から区切られます。
- 文字列の末尾には重複した文字以外何もありません
- 少なくとも 1 つの繰り返し/重複した文字列/文字が存在します。
これらのルールが変更が必要な列名を正確に定義していると仮定すると、次のコードは、上記の仮定に一致する「現在のデータ テーブル」内のすべての列名を更新します。 前提条件と一致しない列名は変更されません。
names default to here(1);
dt = current data table();
for( k = 1, k <= n cols(dt), k++,
colName = column(dt, k) << get name();
colName = regex( colName, "^.*?(.+)(?:_\1)+$", "\1" );
try( column(dt, k) << set name( colName ) );
);
文字列に重複文字があるかどうかを判断して抽出するにはどうすればよいですか?現在、1000 を超える列を含むテーブルがあり、ほとんどの列名に抽出する必要がある重複した単語が含まれています。 JSL でこれを実現するにはどうすればよいか、偉い人たちに聞いてください。
例えば:
列名は abp-g5.GAIV_0099_P013_GAIV_0099_P013 なので、GAIV_0099_P013 を抽出します。
列名は abp-g5.GAI1997_GAI1997 なので、GAI1997 を抽出します
自動化とスクリプト作成マックOSマスカスタマイゼーション