質問

2016年11月24日 14時12分
  • VBScriptの関数『InStrRev』について

情シスのオープンナレッジ『Syszo』サービス終了のお知らせ

質問

お世話様です。
VBScriptの関数『InStrRev』についての質問です。

▽objFileの中身
C:hoge\huga\piyo01piyo.txt

▽実行
Right(InStrRev(objFile,""))

▽期待値
\piyo01piyo.txt

▽実際の戻り値の例
a\piyo01piyo.txt

このように挙動がおかしくなることがありますがなぜでしょう?
そもそも私のやり方が違いますか?(知識不足すみません・・・)
ご存知の方いらっしゃいますか?

7件の回答があります

回答

▽objFileの中身
C:hoge¥huga¥piyo01piyo.txt

▽実行
Right(InStrRev(objFile,”¥”))

▽期待値
¥piyo01piyo.txt

▽実際の戻り値の例
a¥piyo01piyo.txt

リプレースされちゃいました。

2016年11月24日 14時18分

回答

> ▽実行
> Right(InStrRev(objFile,”¥”))
これがエラーになりそうなので実際にどう書かれているかが不明ですが、おそらく↓のようなことをやりたいのかなという推測です。

dim objFile
objFile = ”C:hoge¥huga¥piyo01piyo.txt”
msgbox(Right(objFile, Len(objFile) - InStrRev(objFile,”¥”)+1))

2016年11月24日 14時41分

回答

あるいはSplit関数を使うとか?
http://www.kanaya440.com/contents/script/vbs/function/string/split.html
UBoundと組み合わせれば出来そう。

2016年11月24日 14時49分

回答

あとはこんなのとか。
http://vbs.mystia.jp/227

2016年11月24日 14時54分

回答

igonさん、shinjiさん

回答ありがとうございます!
igonさんの推測で合っています。

そもそもInStrRevの挙動をちゃんと理解できていなかったようです・・・。
ご迷惑をおかけしました。

2016年11月24日 15時24分

回答

よかったです。
おそらくですが、InStrRevが「末尾から探していくが、返ってくるのは先頭からの位置」というところが引っかかったポイントかなと思います。

2016年11月24日 15時30分

回答

igonさん

そのとおりです・・・。
思い込みで勝手に罠にはまってました。
またひとつ成長できました。

2016年11月24日 15時40分

あなたもコメントしましょう!