Notes でアプリケーション開発をしていて使用する命令に Trim があります。文字列内のスペースを取り除いてくれる関数で頻繁に使いますよね。
先日、開発作業中に LotusScript の Trim 関数と @Trim で挙動が違うことに気が付きました。テスト結果とともに仕様を整理します。
テスト方法
次のようなフォームを作成しテストを実行しました。
各フィールドは次の設定としています。
フィールド名 | 種類 | 式 |
SrcStr | テキスト / 編集可能 | |
Func | テキスト / 計算結果 | @Trim(SrcStr) |
LS | テキスト / 作成時の計算結果 | "" |
更新ボタンのコードは下記の通りです。このボタンで @式を実行し、LotusScript の実行結果をフィールドにセットしています。
Sub Click(Source As Button) Dim nuiw As New NotesUIWorkspace Dim nuid As NotesUIDocument Dim nd As NotesDocument Set nuid = nuiw.CurrentDocument Set nd = nuid.Document nd.LS = Trim(nd.SrcStr(0)) Call nuid.Refresh() End Sub |
テスト結果
下表のとおりテスト文字列を変えながら結果を確認しました。
テスト文字列 | @関数 | LotusScript | 備考 |
" " (半角SPx1) |
"" (null) |
"" (null) |
|
" " (全角SPx1) |
"" (null) |
"" (null) |
|
" " (半角SPx3) |
"" (null) |
"" (null) |
|
" " (全角SPx3) |
"" (null) |
"" (null) |
|
" あ " (前後の半角SP) |
"あ" | "あ" | 個数に関係なく削除 |
" あ " (前後の全角SP) |
"あ" | "あ" | 個数に関係なく削除 |
"あ い う" (間の半角SP) |
"あ い う" | "あ い う" (変化なし) |
@Trimでは複数の半角スペースは1つに変換 |
"あ い う" (間の全角SP) |
"あ い う" | "あ い う" (変化なし) |
@Trimでは複数の全角スペースは半角1つに変換 全角1つの場合はそのまま |
まとめ
実験結果をまとめると次の通りです。
◇ 同じ結果となる処理
- スペースだけで構成される文字列は、全角/半角を問わず null となる
- 文字列の前後のスペースは、全角/半角を問わず消去される
◇ 挙動が違う処理( = 文字間のスペースの処理)
- @Trim では、複数の全角スペースは半角スペース1つに変換
(全角スペース1つの場合は全角のまま) - LotusScript では、文字間のスペースは処理されない
0 件のコメント:
コメントを投稿