VBSのInStrRev関数の第3パラメータ(Start)の使用に関する注意点
VBSのInStrRev関数は結構使っているのですが、第3引数はほとんど使ったことがなく、今日、第3引数が思っていたのと違うことに気がつきました。
InStrRev関数は、ドキュメントではこのように説明されています。
Returns the position of a string as it appears in another string, counting from the end.
InStrRev(string1, string2[, start[, compare]])
Parameters
string1
Required option. Accepts a string expression for the search.
string2
Required option. The string expression to be searched.
Start
Optional. Numeric expression that sets the start position of each search. If omitted, the default value is -1, indicating that the search starts at the position of the last character. If start contains Null, an error occurs
compare
Optional. Indicates the value of the comparison type to use when calculating substrings. If omitted, a binary comparison will be performed. For values, see the Settings section.
第3パラメータは、各検索の開始位置を設定するために使用される。省略した場合のデフォルト値は-1であり、これは最後の文字の位置から検索が開始されることを意味します。ですから、省略されない場合(Nとする)、最後のN文字の位置から検索を開始することを意味すると、私は当然のように考えました。なぜこのように考えたかというと、ドキュメントの表現が稚拙なのか、他の言語の影響を受けたのかもしれません。
簡単なスクリプトを見てみましょう。
s = http://jb51.net
n = InStrRev(s, "jb51")
WScript.Echo n
n = InStrRev(s, "jb51", 2)
WScript.Echo n
一回目は8を出力して問題ないが、二回目は0を出力して、jb51という文字列が見つからなかったことを示している。問題は、第三引数が、検索開始位置を最後のN文字の位置ではなく、N文字の先頭であることを示していることである。
つまり、InStrRev(s, "jb51", 2) は InStrRev(Left(s, 2), "jb51") と同じで、当然ながら検索されないということです。
ところで、最後の引数について、中国語のドキュメントでは次のように間違っています。
compareパラメータは以下の値をとることができます。
vbBinaryCompare はバイナリ比較を実行します。
vbDatabaseCompare は、比較を実行するデータベースに含まれる情報に基づいて比較を実行します。
正しいのはvbBinaryCompareとvbTextCompareなので、英語のドキュメントを読んでみてください、結構間違いが多いのですが。
関連
-
VBS 日付(時刻)書式機能コード
-
VBS再帰的手法による多階層ディレクトリフォルダ作成方法
-
vbs LAN上のコンピュータのソフトウェアとハードウェアのリストを照会する。
-
vbsによるテキストループの読み込み
-
指定されたファイルを指定されたディレクトリにバックアップし、日付で名前を変更するVbsコード
-
VBSを使用してローカルファイルを参照する3つの方法、フルパスを取得する
-
VBSの基本 - VBScriptの処理(SubとFunctionを使った関数の定義)
-
指定されたプロセス名の小さなVBSを終了させる
-
vbscriptを用いた36ビット自動増加数生成コード
-
iisext.vbsでアプリケーションを有効にする方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
VBSは現在のスクリプトがあるフォルダーを開く
-
vbs 指定されたファイルを指定されたディレクトリにコピーする。
-
vbを使用してコンピュータのアクティビティログを監視する方法
-
ExcelワークシートのVBSトラバーサルのコード
-
ジッターバグvbs告白コードブック ジッターバグvbscript告白コード使用方法
-
VBSの基本 Errオブジェクト
-
VBSテクノロジーインサイダー。CreateObject関数の説明
-
VBScript 2 json文字列をjsonオブジェクトにパースするメソッド
-
Iisext.vbsでWebサービス拡張を有効にする方法
-
iisext.vbsを使用してアプリケーションの依存関係を追加する方法