2010-10-05
文字列の部分文字列を取得するサブルーチン
ウィンドウズのバッチファイル(.bat)で部分文字列を取得するには…
%変数名:~a,b%
で変数の中身の文字列の0から始まるインデックスa番目から、長さbの部分を切り出せるということは調べるとすぐわかります・・・
たとえば
>set x=abcdefg
>echo %x:~2,4%
cdef
しかし、上記のaとbが数字のリテラルでないと期待した結果になりません。たとえば、以下のように記述すると・・・
>set x=abcdefg >set y=2 >set z=4 >echo %x:~%y%,%z%% abcdefgy%,4%
setlocalコマンドにenabledelayedexpansionという引数を指定すると、環境変数の参照に
%環境変数%だけでなく、!環境変数!も使えるようになります。
そこで、他のプログラミング言語にあるような3つの引数をとる文字列の部分文字列を求めるサブルーチンを書いてみます。
GET_SUBSTR.bat
@echo off setlocal enabledelayedexpansion call :GET_SUBSTR %* echo %substr% endlocal goto :EOF ::部分文字列を取得する ::使用法 call :GET_SUBSTR (文字列) (開始インデックス) (部分文字列の長さ) :GET_SUBSTR set str=%1 set startIndex=%2 set length=%3 ::setlocalでenabledelayedexpansionを宣言しているので以下の記述が可能。 set substr=!str:~%startIndex%,%length%! exit /b
GET_SUBSTR.batのあるディレクトリで以下のように動作確認できます。実際にはbatの他の箇所で使用します。
>GET_SUBSTR.bat abcdefg 2 4 cdef
トラックバック - http://d.hatena.ne.jp/IIJIMAS/20101005/1286289954
リンク元
- 2 http://ezsch.ezweb.ne.jp/search/?query=ココロ+鏡音リン&start-index=6&adpage=3&ct=1101&sr=0000&t=20101006002125&filter=1
- 1 http://www.google.co.jp/search?hl=&q=db-l50+dwr-pg&sourceid=navclient-ff&rlz=1B3GGLL_ja___JP392&ie=UTF-8&aq=5&oq=DB-L50+
- 1 http://www.google.co.jp/search?q=windows+live+メール+新着通知&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&hl=ja&client=firefox-a