データを列形式で受け取り、文字列に変換します私は次のことをしようとしています:
ユーザーからの次の入力を受け入れます:
A1234965
A1233339
A1234736
A123494Z
A1233114
これを文字列に変換します: "A1234965,A1233339,A1234736,A123494Z,A1233114"
入力される「列」の長さに制限はありません。 ユーザーに「列」を要求するポップアップ ウィンドウに貼り付け、そのデータを上記の文字列として保存してもらいたいと考えています。 私の本当の問題は、ユーザーからの入力を受け入れる方法を見つけることです(「テキスト編集ボックス」では列形式を貼り付けることができません)。 もちろん、その入力を必要な文字列形式に変換する方法もわかりません。 助けていただければ幸いです。 ありがとう!
自動化とスクリプト作成Re: データを列形式で受け入れ、文字列に変換するConcat Items() 関数を使用する
names default to here(1);
x={"aa","bb"};
y=concat items(x,",");Re: データを列形式で受け入れ、文字列に変換するまず次を使用してデータを分割する必要があります言葉() Concat Items() を使用する前に。 データの貼り付け元によっては、Words() を使用する前にいくつかの置換を実行する必要がある場合があります。 これらは次のように実行できますGLOBALREPLACE を使用した Regex()また置換()/置換() 。
重複を削除することも良い考えです (アルファベット順に並べることが問題でなければ、連想配列をこれに使用できます)。
Re: データを列形式で受け入れ、文字列に変換するありがとうございます。concat 関数を必ず使用します。 私の大きな問題は、ユーザー入力を受け入れることです。 データテーブルから列をコピーし、編集ボックスに貼り付けることになります。 私の現在のコード(以下を参照)では、コピーされた列の最初のセルのみを取ります... これは、「テキスト編集ボックス」とテキスト データ型を使用しているためだと思います。次のような形式のデータを受け取ることができる編集ボックスとデータ型はありますか?
A1234965
A1233339
A1234736
A123494Z
A1233114
私の現在のコードは次のとおりです。
Lots = "abc";
w = New Window("Lot(s) of Interest",
Border Box(top(50), bottom(50), Left(50), Right(50),
V List Box(
H Center Box(Text Box("Lot(s) of Interest Input")),
Spacer Box(size(1, 30)),
H List Box(Text Box("Lots: "), b1 = Text Edit Box(Lots)),
Spacer Box(size(1, 10)),
H Center Box(
Button Box("Save",
Lots = b1 << get text;
w << closeWindow;
)
)
)
)
);Re: データを列形式で受け入れ、文字列に変換するやあ@aidanweb 、
エントリを解析する方法は決まっているようですが、エントリの表示に問題があるようです。 実際にはすべての行が正常に貼り付けられているにもかかわらず、テキスト編集ボックスに 1 行しか入力されていないように見えるかもしれませんが、ボックスの高さのせいでテキスト編集ボックスが表示されません (編集ボックス内で上下の矢印を押すと)。他の行も表示されます)。
私がやるべきことは、ダイアログを作成するときに編集ボックスのサイズを、貼り付けの予想されるおおよそのサイズに事前に設定することです。 次のようなものを追加することでこれを行うことができます。
b1<<SETNLINES></SETNLINES>

これがお役に立てば幸いです!
@ジュリアン
Lots = "abc";
w = New Window("Lot(s) of Interest",
Border Box(top(50), bottom(50), Left(50), Right(50),
V List Box(
H Center Box(Text Box("Lot(s) of Interest Input")),
Spacer Box(size(1, 30)),
H List Box(Text Box("Lots: "), b1 = Text Edit Box(Lots)),
Spacer Box(size(1, 10)),
H Center Box(
Button Box("Save",
Lots = b1 << get text;
w << closeWindow;
)
)
)
)
);
b1<<SetNLines(10)<<set width(150);
Re: データを列形式で受け入れ、文字列に変換する
Re: データを列形式で受け入れ、文字列に変換する前に述べたように、Words() を使用してリストに分割します。 次に、Concat Items() を使用して、そのリストを結合して文字列に戻します。 Words() の区切り文字として \!N を使用するだけで十分かもしれませんが、正しく動作しない場合があります。
Names Default To Here(1);
str = "abc
def";
lst = Words(str, "\!N");
str2 = "'" || Concat Items(lst, "','") || "'";
show(str, lst, str2);
Re: データを列形式で受け入れ、文字列に変換するありがとう、これはとても助かります。 入力を {"aa", "bb", "cc"} のような形式のリストに変換する際にまだ問題が発生しています。 入力は単なる長い文字列なので、words 関数はすぐに機能すると思っていたのですが...おそらく何か間違ったことをしています。 私のログのスクリーンショットを添付しました。

Re: データを列形式で受け入れ、文字列に変換する適切な区切り文字を含めませんでした言葉()関数。 あなたの場合、区切り文字として行末文字が必要です。 引用符で囲まれた文字列のエスケープ シーケンスの表を参照してください。 JSL構文規則。
これを試して:
Names Default To Here( 1 );
Lots = "abc";
w = New Window( "Lot (s) of Interest",
Border Box( top( 50 ), bottom( 50 ), Left( 50 ), Right( 50 ),
V List Box(
H Center Box( Text Box( "Lot (s) of Interest Input" ) ),
Spacer Box( size( 1, 30 ) ),
H List Box( Text Box( ("Lots: ") ), b1 = Text Edit Box( Lots, <<SETNLINES></SETNLINES> //include the delimiters for carriage and new line in the Words() function
newlots = Words( Lots, "\!r\!n" );
Show( Lots );
Show( newlots );
)
)
)
)
);