IDL 8.4 で追加された IDL_String クラスを使うことで、以前よりも文字列処理を簡単に行うことができる場合がある。
文字列中に含まれる特定の文字列を別の文字列に置換する。
str = "output file.eps"
PRINT, str.Replace(' ', '-')
PRINT, str.Replace('OUTPUT', 'INPUT',/FOLD_CASE) ; FOLD_CASE キーワードを指定すると大文字・小文字を区別しない
正規表現(先読み・後読みには未対応)に最初にマッチした部分文字列を取り出す(stregex関数に相当)。
str = "DATA20170503.ps2"
PRINT, str.Extract('[0-9]{8}')
PRINT, str.Extract('([0-9]{4})([0-9]{2})([0-9]{2})', /SUBEXPR) ; SUBEXPRキーワードを指定すると、マッチした全体に加えて、括弧で囲んだグループ化した文字列も文字列型の配列で得る
PRINT, str.Extract('^data[^.]*',/FOLD_CASE) ; FOLD_CASE キーワードを指定すると大文字・小文字を区別しない
string
関数の使い方: b=string(a, format='(i0)')
とすることで整数aを文字列bに変換できる。小数のときは format='(f0.3)'
とかformat='(e0.3)'
とする。
string
関数やprint
プロシージャのformat
キーワードに渡すformatコードの書き方はFORTRANの編集記述子とよく似ている。print,format='(%"a = %d, b = %s")', 10, 'abc'
to_hex
関数も使える。(要ASTROLIB)Result = STRCMP( String1, String2 [, N] [, /FOLD_CASE] )
Result = STREGEX( StringExpression, RegularExpression [, /BOOLEAN | , /EXTRACT | , LENGTH=variable [, /SUBEXPR]] [, /FOLD_CASE] )
strmatch
strpos
strcompress
関数を使う。空白を全て削除するにはremove_all
キーワードを付加する。strupcase(String)
strlowcase(String)
BYTE(String)
STRING(['C5'XB, 'B0'XB, 'B5'XB, 'B7'XB, 'D7'XB, 'F7'XB])
(順にÅ, °, µ, ·, ×, ÷)strjoin
strsplit
strtrim(String[, Flag])
strlen(String)
strmid(String,Position[,Length])
strput(Destination,Source[,Position])