1.創建字符串
字符串和字符串數組通過賦值或函數方式來創建。在IDL字符串用" "或' '括起來表示。
IDL> s1="abcdef" IDL> help,s1 S1 STRING = 'abcdef' IDL> s2=strarr(4) IDL> help,s2 S2 STRING = Array[4]
以"為首的字符串的首字符不能為數字,因為以"開頭的數字串代表一個8進制數,如"11表示8進制的11,即10進制的9
IDL> help,"11
<Expression> INT = 9
當字符串中需要包含'或"時,可以再字符串里面寫兩個同樣的'或"符號,示例代碼如下
IDL> s1="abcdef" IDL> help,s1 S1 STRING = 'abcdef' IDL> s2="a'b'c" IDL> help,s2 S2 STRING = 'a'b'c' IDL> s3='ab"c' IDL> help,s3 S3 STRING = 'ab"c' IDL> s4="ab""""c" IDL> help,s4 S4 STRING = 'ab""c'
2.字符串連接
直接用加號“+”
IDL> s1="abc" IDL> s2="def" IDL> s3=s1+s2 IDL> help,s3 S3 STRING = 'abcdef'
3.字符串轉換
字符串可以直接轉換為字節類型(byte),而整型(int)、浮點型(float)等其他類型不允許直接轉換,需要先將字符串轉換為子姐姐類型在轉換為其他類型;逆變換也是如此。
IDL> s1="abc" IDL> print,byte(s1) 97 98 99 IDL> print,fix(s1) % Type conversion error: Unable to convert given STRING to Integer. % Detected at: $MAIN$ 0 IDL> print,fix(byte(s1)) 97 98 99 IDL> print,string([97,98,99]) 97 98 99 IDL> print,string(byte([97,98,99])) abc
4.處理函數
字符串操作都是通過字符串處理函數來實現的
(1) 字符串截取
利用字符串操作函數提取采集時間
IDL> ;文件完整路徑 IDL> file='c:\temp\AMOD0320040707140331.hdf' IDL> ;獲取文件完整路徑的文件名 IDL> basename=file_baseName(file) IDL> print,basename AMOD0320040707140331 IDL> ;獲取文件名中的時間部分字符 IDL> print,strMid(basename,6,8) 20040707
基於文件名計算文件名的擴展名的代碼
IDL> file='c:\temp\AMOD0320040707140331.hdf' IDL> basename=file_basename(file) IDL> ;查找文件名中“.”的位置 IDL> pPos=STRPOS(baseName,".",/REVERSE_SEARCH) IDL> ;如存在“.”則輸出大寫格式的擴展名 IDL> if pPos [0] -1 then print,StrUpCase(StrMid(basename,pPos[0]+1,3)) HDF
(2) 多字串截取
IDL> str='abcdefghijklmnopqrst' IDL> ;數組截取可以彩玉下標數組的方式 IDL> str1=strmid(str,indgen(4)*5,5) IDL> help,srt1 SRT1 UNDEFINED = <Undefined> IDL> print,str1 abcde fghij klmno pqrst
(3) 空格去除
函數有StrTrim和StrCompress,示例代碼如下:
IDL> ;定義整型變量 IDL> var=41 IDL> ;轉換為字符串 IDL> str=string(var) IDL> ;轉換后前面包含空格 IDL> help,str STR STRING = ' 41' IDL> ;定義前后都包含空格的字符串 IDL> str=" 6 " IDL> ;StrTrim函數去除前后空格,參數1只去除前面的空格,參數2去除前后的空格 IDL> help,strtrim(str,2) <Expression> STRING = '6' IDL> ;字符串前后和中間均有空格 IDL> str=" 5 6 7 " IDL> ;函數StrCompress去除字符串中所有的空格 IDL> help,StrCompress(str,/Remove_all) <Expression> STRING = '567'
(4) 數組處理
利用字符串操作函數求出整型數組中以2開頭的子數組
IDL> arr=[12,23,45,65,25] IDL> print,arr[where(strmatch(strtrim(arr,2),'2*') eq 1)] 23 25
5.特殊字符
無法打印輸出的特殊字符
ASCII字符 | 數據值(字節型) |
Bell | 7B |
后退 | 8B |
水平TAB | 9B |
換行 | 10B |
數值TAB | 11B |
走紙 | 12B |
回車 | 13B |
ESC(取消) | 27B |