(for Internet Explorer)
Function  CompareFuncion( Left as variant, Right as variant, Param as variant ) as integer
2つのパラメーターを比較する関数の型。 関数名は、CompareFuncion とは限りません。
【引数】
Left
Right
1つ目のパラメーター
2つ目のパラメーター
Param
比較に使う補助パラメーター
返り値
0:等しい、正の数:Left が大きい、負の数:Rightが大きい (昇順:小→大のとき)
も、この関数型です。
Left、Right は、
などの関数に指定するコレクションの要素です。
Param には、ShakerSort などの関数にある引数がそのまま渡ります。
昇順:小→大にするときは、Left - Right の値を返してください。
降順にするときは、返り値の正と負を変えてください。
関連
Function  StdCompare( Left as variant, Right as variant, Param as variant ) as integer
2つのパラメーターを標準的な方法で比較します。
Left
Right
返り値
です。
数値
数値
-1, 0, 1 のどれか。(=や>と同じ)
文字列
文字列
StrComp と同じ (=や>と同じ)。Param 引数も同じ
オブジェクト
オブジェクト
の結果が True なら 0、 False なら -1
Empty
Empty
0
Empty 以外
Empty
1 (昇順でソートすると、Emptyが最後になる)
Empty
Empty 以外
-1
日付
日付
古い方が小さい値となる返り値 (=や>と同じ)
(src)
任意の型
Left と異なる型
-1 (エラーにはならない)
テスト
→ T_QSort.vbs # [T_CompareFunc]
Param 引数は、Left と Right が文字列のときだけ有効です。
Function  NameCompare( Left as variant, Right as variant, Param as variant ) as integer
2つのパラメーターを Name プロパティで比較します。
Left
Right
返り値
です。
オブジェクト
オブジェクト
Name プロパティを StrComp に渡した結果
オブジェクト以外
オブジェクト以外
0
オブジェクト以外
オブジェクト
-1 (昇順でソートすると、オブジェクト以外が最後になる)
オブジェクト
オブジェクト以外
1
(src)
テスト
→ T_QSort.vbs # [T_CompareFunc]
Param 引数は、StrComp 関数と同じです。
Function  LengthCompare( Left as variant, Right as variant, Param as variant ) as integer
2つのパラメーターの長さを比較します。
文字列型のときは、文字列の長さを比較します。
Param がマイナスなら、返り値の正と負が入れ替わります。
です。
(src)
Function  LengthNameCompare( Left as variant, Right as variant, Param as variant ) as integer
2つのパラメーターの Name プロパティを LengthCompare で比較します。
です。
(src)
Param = -1 にすると、逆順になります。
関連
Function  CInt2( v as string ) as integer
CInt でエラーが発生する値を v に指定したときは、0 を返します。
文字列を数値に変換します。
(src)
VBScript では、CInt は、符号付き16ビット整数ですが、CInt2 は
CLng に相当する 符号付き32ビット整数に対応しています。
Function  Trim2( v as string ) as string
文字列の端の空白文字だけでなく、タブ文字、改行文字もカットした文字列を返します。
Function  LTrim2( v as string ) as string
Function  RTrim2( v as string ) as string
(src)
Function  LenK( Str as string ) as integer
英文字を 1文字、日本語(文字コード256以上)を 2文字として文字数を返します。
サンプル:
LenK( "123" ) = 3
LenK( "123あいう" ) = 9
(src)
関連
(src)
Function  GetTab( Level as integer ) as string
インデント数を指定して、空白文字を返します。
インデント数×2の空白文字を返します。
Sub  CutLastOf( in_out_Str as string, LastStr as string, Opt as integer )
(src)
in_out_Str の最後が LastStr と一致したら、それをカットします。
【引数】
in_out_Str
LastStr
(入出力) カットされるかもしれない文字列
比較する文字列
関連
→ T_Str.vbs # [T_StrComp]
テスト
Opt
Empty または
サンプル:
s = "file1.txt"
CutLastOf  s, "1.txt", Empty
Assert  s = "file"
→ T_Str.vbs # [T_StrComp]
テスト
Function  StrCompHeadOf( Str as string, HeadStr as string, Opt as integer ) as integer
文字列の先頭を比較します。
【引数】
Str
HeadStr
比較される文字列
Str の先頭と比較する文字列
Opt
Empty または
Str 引数の値
LastStr 引数の値
返り値
返り値
Str の先頭 = HeadStr なら、0
"ABCDE"
"ABC"
0 (=一致)
0以外(=異なる)、負の値
"CDE"
"ABCDE"
関連
(src)
(src)
→ T_Str.vbs # [T_StrComp]
テスト
Function  StrCompLastOf( Str as string, LastStr as string, Opt as integer ) as integer
文字列の末尾を比較します。
【引数】
Str
LastStr
比較される文字列
Str の末尾と比較する文字列
Opt
Empty または
Str 引数の値
LastStr 引数の値
返り値
返り値
Str の末尾 = LastStr なら、0
"ABCDE"
"CDE"
0 (=一致)
0以外(=異なる)、正の値
"ABC"
"ABCDE"
関連
(src)
Function  StrCount( Str as string, Keyword as string, StartPos as integer, Opt as integer ) as integer
文字列が存在する数を返します。
【引数】
Str
Keyword
数を数えられる文字列
数を数える文字列
Opt
Empty または
Str 引数の値
Keyword 引数の値
返り値
返り値
Str の中にある Keyword の数
"ABCABC"
"ABC"
2
2
"A"
"ABCABC"
Str の中の、数え始める位置。 先頭=1
StartPos
"D"
0
"ABCABC"
"/Folder/File"
"/"
2
テスト
→ T_Str.vbs # [T_StrCount]
(src)
Function  StrCompOption( Opt as integer ) as integer
の Option 引数に指定する値を返します。
Opt 引数の値
返り値
Empty
vbBinaryCompare (=0)
vbTextCompare (=1)
大文字小文字は区別しない
大文字小文字は区別する
その他
vbTextCompare (=1)
いろいろな関数の Opt 引数が、StrCompOption の Opt 引数と同じ意味を持つことが
よくあります。
サンプル:
Dim  c : Set c = g_VBS_Lib
If StrCompLastOf( "ABC", "BC", c.CaseSensitive ) = 0 Then ...
サンプル:
Dim  c : Set c = g_VBS_Lib
If StrComp( "ABC", "BC", StrCompOption( c.CaseSensitive ) ) = 0 Then ...
(src)
Function  AddIfNotExist( WholeStr as string, AddStr as string, Separator as string,
    Opt ) as string
WholeStr に AddStr が含まれていなければ、先頭に AddStr を追加したものを返します。
【引数】
WholeStr
AddStr
文字列の列挙
追加する文字列
Separator
文字列の列挙を区切る文字列
AddStr+Separator+WholeStr、または、WholeStr
返り値
Opt
Empty または
サンプル
Assert  AddIfNotExist( "ABC;DEF", "XYZ", ";", Empty ) = "XYZ;ABC;DEF"
Assert  AddIfNotExist( "ABC,XYZ", "XYZ", ",", Empty ) = "ABC;XYZ"
Assert  AddIfNotExist( "", "XYZ", ";", Empty ) = "XYZ;"
set_ "PATH", AddIfNotExist( env("%PATH%"), _
     GetAbsPath( "..\bin", Empty ), ";", Empty )
サンプル
PATH 環境変数に "..\bin" フォルダーの絶対パスを追加する
→ T_Str.vbs # [T_AddIfNotExist]
テスト
関連
" " で囲まれた部分を取り出す。
Function  MeltQuot( Line as string, in_out_Start as integer ) as string
i = 1
Do
  s = MeltQuot( line, i )
  If not IsEmpty( s ) Then (s を使った処理)
  If i = 0 Then Exit Do
Loop
【引数】
Line
in_out_Start
文字列全体
(入力) 取り出しを開始する文字の位置、(出力)次に取り出す〜
返り値
" " で囲まれた部分文字列。Empty=項目に値が無い
サンプル
(src)
→ T_Str.vbs # [T_MeltQuot]
テスト
Function  sscanf( String, Format )
(src)
文字列の途中を取り出します。
【引数】
String
Format
文字列全体
取り出す部分を指定する文字列。 "%d" または "%s" を含む
vbslib.vbs
ファイル:
返り値
取り出した文字列、または、数値
サンプル:
Assert  sscanf( "ABC123DEF", "ABC%dDEF" ) = 123
数値を取り出すときは、%d を使います。
文字列を取り出すときは、%s を使います。
Assert  sscanf( "===[ABC]===", "[%s]" ) = "ABC"
サンプル:
→ T_Str.vbs # [T_sscanf]
テスト
関連
サンプル:
Assert  sscanf( "===[123] [456]===", "[%s]" ) = "123"
Assert  sscanf( "===[ [ 123 ] ]===", "[%s]" ) = " [ 123 "
複数にマッチする場合、最も左にあるものとマッチします
Function  InStrEx( WholeString as string, Keyword as string, StartIndex as integer,
                     Opt as integer ) as integer
オプションを指定して文字列を検索します。
【引数】
WholeString
Keyword
検索対象になる文字列
検索するキーワード
StartIndex
検索を開始する位置。先頭=1。 全体を検索=0
返り値
Opt
下記のフラグ、または Empty
見つかった文字列の先頭の位置。 0=見つからなかった
サンプル
単語全体にマッチする文字列を検索します
Dim  c : Set c = g_VBS_Lib
Assert  InStrEx( "answer ans", "ans", 1, c.WholeWord or c.CaseSensitive ) = 8
Opt 引数
c.WholeWord
下記のフラグを複数指定するときは、or で接続してください。
なお、c は、g_VBS_Lib の返り値です。
英語の単語全体にマッチする文字列を検索します。
このフラグを指定しなければ、単語の一部にキーワードを含む単語も
検索にヒットします。
c.Rev
c.CaseSensitive
大文字、小文字を区別します。
このフラグを指定しなければ、大文字、小文字が異なる文字列も
検索にヒットします。
前方に向かって検索します。
このフラグを指定しなければ、後方に向かって検索します。
"answer ans", "ans"
テスト
→ T_Str.vbs # [T_InStrEx]
c.LastNextPos
返り値を、見つかった文字列の末尾の次の位置にします。
(src)
参考
参考
Function  InStrLast( WholeString as string, Keyword as string ) as integer
文字列を検索して、最初に見つかったキーワードの末尾の次の位置を返します。
【引数】
WholeString
Keyword
検索対象になる文字列
検索するキーワード
vbslib
モジュール・シンボル:
返り値
キーワードの末尾の次の位置、見つからない=0
(src)
→ T_Str.vbs # [T_InStrLast]
テスト
InStrLast( "ABCDEF", "CD" ) = 5  '// E の位置
サンプル
関連
(src)
Function  IsWholeWord( WholeString as string, StartIndex as integer, SubWordLen as integer )
                       as integer
文字列の中の指定した範囲が、単語単位になっているかどうかを返します。
【引数】
WholeString
StartIndex
検索対象になる文字列
範囲の開始位置。 先頭=1。文字単位
vbslib
モジュール・シンボル:
SubWordLen
範囲の長さ(文字数)
単語単位になっているかどうか
返り値
サンプル
Assert  IsWholeWord( "This is a pen.", 6, 2 ) = True
Assert  IsWholeWord( "This", 2, 2 ) = False
Assert  IsWholeWord( "This is", 1, 7 ) = True
範囲の中に複数の単語があっても、両端が単語の単位になっていれば True になります。
関連
(src)
.Keyword
.IsMatch
Function  StrMatchKey::IsMatch( TestStr as string ) as Boolean
* のワイルドカードを使って、マッチするかどうかを高速に判定します。
* は2つ以上指定できません。エラーになります。
Property  Keyword  as string
ワイルドカードを含むキーワード。
TestStr が、.Keyword で設定したワイルドカードにマッチするかどうかを返す。
大文字小文字を区別しません。
.IsMatchULCase
TestStr が、.Keyword で設定したワイルドカードにマッチするかどうかを返す。
大文字小文字を区別します。
Function  StrMatchKey::IsMatch( TestStr as string ) as Boolean
サンプル:
  Dim  match : Set match = new StrMatchKey
  match.Keyword = LCase( "*.TXT" )
  If match.IsMatch( "file1.txt" ) Then
    :
  End If
file1.txt
*.TXT
大文字小文字を区別しないときは、LCase を使って小文字にしてください。
テスト
→ T_Wildcard.vbs # [T_StrMatchKey]
.Test
.IgnoreCase
RegExp と同じ
関連
文字列を
TextStream
と同じようにアクセスします。
.SetString( Str as string )
.ReadLine
.AtEndOfStream
1行入力します。 TextStream 互換
すべて入力したかどうか。 TextStream 互換
全体の文字列を設定し、ファイルポインタを先頭に戻す。
(src)
  Set file = new StringStream

  file.SetString  "123" +vbCRLF+ "456"

  Do Until  file.AtEndOfStream()
    echo  file.ReadLine()  ' 改行(vbCR+vbLF)は含まない
  Loop

  file = Empty
テスト
→ T_Replace_target.vbs # T_StringStream
改行文字は、vbLF でも構いません。
.ReadAll
.Write
.WriteLine
全体を入力します。 TextStream 互換
文字列を出力します。 TextStream 互換
1行を出力します。 TextStream 互換
出力した文字列は、ReadAll で取得できます。
Write したものを先頭から Read するときは、ReadAll したものを SetString してください。
サンプル
文字列からリードする
  Set file = new StringStream

  file.WriteLine  "123"
  file.WriteLine  "456"

  Assert  file.ReadAll() = "123"+ vbCRLF +"456"+ vbCRLF

  file = Empty
文字列へライトする
サンプル
Function  CutLineFeedAtRightEnd( Text as string, Width as integer ) as string
コマンドプロンプトの右端からあふれた文字列を1行にまとめます。
【引数】
Text
Width
コマンドプロンプトからコピーした文字列
コマンドプロンプトの幅
ToolsLib.vbs
モジュール・シンボル:
修正した文字列
返り値
(src)
サンプル
01234567890123456789
ABCDEFGHIJKLMNOPQRST
UVWXYZ
END
Width = 20 の場合、
ABCDEFGHIJKLMNOPQRSTUVWXYZ
END
テキストファイルの内容を変更します。
" " で囲む XML の属性値に変換します。
CSV 形式の1行を配列に格納する。
改行文字を削除します。