TRIMトリム関数

本ページには広告が含まれています。

文字列の両端の空白と制御文字を取り除きます。

構文
  1. UString = TRIM( 文字列, 全角空白 )
引数
文字列 (String)必須
文字列
全角空白 (Boolean = False)省略可
FALSE
全角の空白は含めない(デフォルト)
TRUE
全角の空白を含めて削除
戻り値
両端の空白と制御文字が取り除かれた文字列

制御文字

コンピューターで文字データを扱うとき改行などを制御する特別な文字で、画面や印刷には表示されません。

以下の表は制御文字の一覧で、TRIM関数では0x7FDEL以外の制御文字を取り除くことができます。

コード キャレット記法 略号 名称
10進数 16進数
0 0x00 ^@ NUL 空文字
Null
1 0x01 ^A SOH ヘッダー開始
Start of Heading
2 0x02 ^B STX テキスト開始
Start of Text
3 0x03 ^C ETX テキスト終了
End of Text
4 0x04 ^D EOT 転送終了
End of Transmission
5 0x05 ^E ENQ 照会
Enquiry
6 0x06 ^F ACK 受信OK
Acknowledge
7 0x07 ^G BEL 警告(ベル)
Bell
8 0x08 ^H BS 後退
Backspace
9 0x09 ^I HT タブ
Horizontal Tabulation
10 0x0A ^J LF 改行
Line Feed
11 0x0B ^K VT 垂直タブ
Vertical Tabulation
12 0x0C ^L FF 改ページ
Form Feed
13 0x0D ^M CR 復帰
Carriage Return
14 0x0E ^N SO シフトアウト
Shift Out
15 0x0F ^O SI シフトイン
Shift In
16 0x10 ^P DLE データリンクエスケープ
Data Link Escape
17 0x11 ^Q DC1 装置制御1
Device Control 1
18 0x12 ^R DC2 装置制御2
Device Control 2
19 0x13 ^S DC3 装置制御3
Device Control 3
20 0x14 ^T DC4 装置制御4
Device Control 4
21 0x15 ^U NAK 受信失敗
Negative Acknowledge
22 0x16 ^V SYN 同期
Synchronous Idle
23 0x17 ^W ETB 転送ブロック終了
End of Transmission Block
24 0x18 ^X CAN キャンセル
Cancel
25 0x19 ^Y EM メディア終了
End of Medium
26 0x1A ^Z SUB 置換
Substitute Character
27 0x1B ^[ ESC エスケープ
Escape
28 0x1C ^\ FS フォーム区切
File Separator
29 0x1D ^] GS グループ区切
Group Separator
30 0x1E ^^ RS レコード区切
Record Separator
31 0x1F ^_ US ユニット区切
Unit Separator
127 0x7F ^? DEL 削除
Delete

タブ(0x09)と改行(0x0D0x0A)はUWSCで特殊文字として用意されているので、それぞれ<#TAB><#CR>で書き換えることができます。

制御文字は直接文字として入力することはできませんが、CHR関数に10進数の値を指定することで制御文字に一致させることができます。

使い方

両端の制御文字を取り除く

stringの両端のタブ(制御文字)を取り除きます。

UWSC
結果
プレーンテキスト

制御文字が連続している場合は、連続するすべての制御文字が取り除かれます。

UWSC
結果
プレーンテキスト

種類の違う制御文字が連続している場合でも、すべて取り除かれます。

UWSC
結果
プレーンテキスト

取り除かれるのは先頭もしくは末尾から連続する制御文字のため、文中の制御文字を取り除くことはできません。以下の場合両端の<#TAB>は削除されますが、文中の<#CR>は削除されません。

UWSC
結果
プレーンテキスト

一部の制御文字のみ取り除く

CHR関数POS関数を組み合わせて制御文字の位置を取得することで、一部の制御文字のみを取り除くことができます。

以下は0x09であるタブの位置を取得するプログラムです。stringの中でタブが最初に見つかった位置が1文字目なので1が返ります。

UWSC
結果
プレーンテキスト

stringから連続する左側のタブのみ取り除くには以下のように記述します。1文字目がタブならstringに2文字目以降を代入を繰り返すことで左側のタブを取り除いています。

UWSC
結果
プレーンテキスト

右側のタブを取り除くにはPOS関数の第三引数に-1を指定し、後ろからサーチします。左側のタブはそのまま残ります。[HT]がタブを表しています。

UWSC
結果
プレーンテキスト

文中の制御文字を取り除く

両端だけでなく文字列全体から特定の制御文字を取り除きたい場合は、CHR関数REPLACE関数 (スクリプト関数)の組み合わせで置換することができます。以下はstringからCRLFの続く制御文字を取り除きます。CRLFはWindowsでよく使われる改行を意味する制御文字です。

UWSC
結果
プレーンテキスト

CRだけ取り除く場合は、以下のように記述します。

UWSC
結果
プレーンテキスト

LFだけ取り除く場合は、以下のように記述します。

UWSC
結果
プレーンテキスト

全角スペース

第二引数にTrueを指定すると両端の全角スペースを取り除くことができます。

UWSC
結果
プレーンテキスト

制御文字

以下のプログラムはTRIM関数で制御文字を取り除くプログラムです。UWSC Debuggerでは制御文字の入力ができないため、サクラエディタで編集して実行しています。

実行時は制御文字を直接入力してテストしていますが、制御文字は通常見えなく区別もつかないため可視化しています。[ ]で囲まれたアルファベットが制御文字を表しています。以下のプログラムは制御文字を直接入力しているわけではないため、実行しても制御文字は取り除くことはできません。

TRIM関数を実行する前の文字数と実行した後の文字数を比較し、変化があれば制御文字を取り除けたと判定しTrueを、取り除けなければFalseと出力しています。

以下の結果からわかるように0x000x1Fの範囲の制御文字はTRIM関数で取り除くことができますが、0x7F削除(DEL)のみは取り除くことができません。

UWSC
結果
CSV

プログラム実行例

システムの起動時間を取得

システムの起動時間をyyyy年m月d日 h:n:sの形式で取得します。

UWSC
結果
プレーンテキスト
使用関数

ファイルを開いているプロセスを調べる

UWSC
使用関数