word( ) 関数と指定された区切り文字を使用した混乱こんにちは皆さん、
列名を操作しようとしています。 検索/置換を 1 回または 2 回行うのは非常に簡単ですが、スクリプトを作成したいと思います。
基本的に、列名を「Singlets/Live leukocytes/Lymphocytes/B cell/A+B+C-,Freq. of Parent」から「」に変更したいのです。 B細胞/A+B+C-、頻度。親の」。
私の現在のコードは次のとおりです。
dt = Current Data Table ();
colList = dt << get column names(string);
For ( i = 1, i <= N Items(colList), i++,
If (
contains(colList[i], "Singlets/Live leukocytes/Lymphocytes/"), <BR />
Column(dt, colList[i]) << set name (Word(2, colList[i], "Lymphocytes/"))
));
このコードの一部を個別に実行すると、次のような結果が得られます。
コード行:
スクリプトログに記録される
colList[i]:
"Singlets/Live leukocytes/Lymphocytes/B cells/A+B+C-,Freq. of Parent"
contains(colList[i], "Singlets/Live leukocytes/Lymphocytes/"):
1
Word(2, colList[i], "Lymphocytes/"):
"iv"
Word(3, colList[i], "Lymphocytes/"):
" l"
Word(4, colList[i], "Lymphocytes/"):
"uk"
Word(9, colList[i], "Lymphocytes/"):
"f Par"
明らかに、区切り文字が期待どおりに機能していません。 何か案は?
最初はWords(4,colList[i], "/")を実行しようとしましたが、その直後に別の/があるため、「B細胞」しか得られませんでした。 他のプログラミング言語とは異なり、JSL で「4 番目の単語以降、最後まですべて」を指定する方法があるかどうかはわかりません。 これは不可能だと思うので、問題が解決すると思い、区切り文字を変更しました。
アドバイスをありがとうございました!!
Re: word( )関数と指定区切り文字の混同おお! そうすれば、スクリプト ガイドの例の 1 つがより意味のあるものになります。
最終的にはsubstrを有利に使用することができました。 コードはお昼過ぎに投稿します!
Re: word( )関数と指定区切り文字の混同混乱の 1 つは、WORDS 関数の区切り文字引数が、これらの文字のいずれかが見つかった場合にこのテキストを分割することを意味していることです。
このアプローチにより、あなたが望むものに近づくことができるかもしれません。
collist = {};
collist[1] = "Singlets/Live leukocytes/Lymphocytes/B cells/A+B+C-,Freq. of Parent";
collist[2] = "Singlets/Live leukocytes/Lymphocytes/Another Text";
collist[3] = "Singlets/Live leukocytes/Lymphocytes/Hello World";
remove_text = "Singlets/Live leukocytes/Lymphocytes/";
len_text = length(remove_text);
for (i = 1, i <= nitems(collist), i++,
start_pos = contains(colList[i], remove_text);
if (start_pos,
end_pos = start_pos + len_text;
new_name = substr(collist[i], end_pos);
show(new_name);
Column(dt, colList[i]) << set name (new_name);
);
);
Re: word( )関数と指定区切り文字の混同区切り文字は文字列ではなく文字です。
この問題では正規表現が役立つ場合もあります。
Re: word( )関数と指定区切り文字の混同N Items( list ) を使用して、存在するレベルの数を確認し、最後からレベルを取得します。
Re: word( )関数と指定区切り文字の混同また、元のコードがなぜ機能しないのか知っていますか?
Re: word( )関数と指定区切り文字の混同リスト項目の数が異なる場合はどうすればよいですか? これは list[4]||" "||list[5] になりますが、リストに 6 つの項目があり、それを最後まで移動したいとします。
N 個の項目を処理する for ループを疑似コード化しようとしていますが、まだ取得していません。
Re: word( )関数と指定区切り文字の混同「ヘルプ」>「スクリプト索引」>「関数」>「文字」>「単語」を参照してください。
Re: word( )関数と指定区切り文字の混同区切り文字には「/」を使用します。 また、代わりに Words() 関数を使用してください。 リストが得られます。 その後、リスト項目を連結できます。 この場合、新しい文字列は list[5] になります。リスト[5]。
とても簡単ですよね?