Action :: Set String
文字列を ASTER へ送信、メモリに記録させる
ASTER::Action::STRING
::Set TEXT
プロパティ
フレームエディタに配置されたエクステンション「 ASTER 」のエクステンション・プロパティにアクセスしてください。
[Properties::Settings] に「TEXT」という項目があり、初期値はここから入力可能になっています。
アプリケーション起動後に文字列を ASTER へ送信する場合には Set String
アクションを利用してください。
アクション
Set TEXT はアプリケーション実行動作中に「ASTER」へ文字列を送信する機能です。送信された文字列データは拡張機能が管理しているメモリ領域で保存されます。
保存された文字列データは正規表現を利用した文字列操作 (置換) のソース文字列として利用されたり、他様々な用途があります。
以下利用上の注意点をお読みください。
注意点.1 暗黙的エスケープ
ここでは CF25 が一部文字列を安全のため暗黙的エスケープ処理していることを紹介します。
CF25 はエクスプレッションエディタを経由してエクステンションに文字列データを渡す際に、一部文字列を「暗黙的エスケープ処理」します。
通常の文字列データには「制御文字」というものが含まれる場合があり、例えば改行は Windows OS の場合 \r\n
( CRLF ) が利用されます。
CF25 は制御文字を対象として一部強制的にエスケープ処理するのですが、アプリケーションに制御文字を送信させないセキュリティ仕様に基づいています。
注意点.2 NewLine$ の利用
NewLine$
を利用します。NewLine$
を利用することで制御文字として拡張機能側に渡され、これで改行を受け取ることが出来ます。
\r\n
は CF25 から ASTER へ送信するとエスケープ処理が施され \\r\\n
となり、ASTER は \r\n
という文字列として受け取ります。16 進数で表現した方が分かりやすいので以下にまとめます。
String | type | Hex |
---|---|---|
\r\n |
改行コード | 0x0D 0x0A |
\\r\\n |
エスケープ文字列 :: \\ は \ ( バックスラッシュで 0x5C ) |
0x5C 0x72 0x5C 0x6E |
\r\n |
文字列 :: \ はバックスラッシュ ( 0x5C ) |
0x5C 0x72 0x5C 0x6E |
CF25 の NewLine$
は Windows の改行コードである 0x0D 0x0A
に相当します。
注意点.3 その他、仕様
正規表現で Regex.Replace ( 置換処理 ) を利用するとき、制御文字が CF25 に文字列化されるので制御文字を含めて置換できないという問題が ASTER Beta には存在しました。
他にもディレクトリパスなど “c:\test” は "c:\\test"
となって ASTER へ送信されます。CF25 の暗黙的エスケープ処理は JSON 形式の文字列仕様的にはありがたい仕様と言えます。( JSON では文字列に直接 \
を含めることができずエスケープ処理が必要 )
制御文字を含める場合、エクスプレッションエディタからの送信データが受信データと内容一致しないケースがあり、暗黙的エスケープ処理が機能する場合の差異を考慮したデータ処理を行う必要があります。