首页 > 代码库 > IDL 字符串

IDL 字符串

1.创建字符串

  字符串和字符串数组通过赋值或函数方式来创建。在IDL字符串用" "或‘ ‘括起来表示。

IDL> s1="abcdef"IDL> help,s1S1              STRING    = ‘abcdef‘IDL> s2=strarr(4)IDL> help,s2S2              STRING    = Array[4]

  以"为首的字符串的首字符不能为数字,因为以"开头的数字串代表一个8进制数,如"11表示8进制的11,即10进制的9

IDL> help,"11<Expression>    INT       =        9

  当字符串中需要包含‘或"时,可以再字符串里面写两个同样的‘或"符号,示例代码如下

IDL> s1="abcdef"IDL> help,s1S1              STRING    = ‘abcdef‘IDL> s2="a‘b‘c"IDL> help,s2S2              STRING    = ‘a‘b‘c‘IDL> s3=‘ab"c‘IDL> help,s3S3              STRING    = ‘ab"c‘IDL> s4="ab""""c"IDL> help,s4S4              STRING    = ‘ab""c‘

2.字符串连接

  直接用加号“+”

IDL> s1="abc"IDL> s2="def"IDL> s3=s1+s2IDL> help,s3S3              STRING    = ‘abcdef‘

3.字符串转换

  字符串可以直接转换为字节类型(byte),而整型(int)、浮点型(float)等其他类型不允许直接转换,需要先将字符串转换为子姐姐类型在转换为其他类型;逆变换也是如此。

IDL> s1="abc"IDL> print,byte(s1)  97  98  99IDL> print,fix(s1)% Type conversion error: Unable to convert given STRING to Integer.% Detected at: $MAIN$                 0IDL> print,fix(byte(s1))      97      98      99IDL> print,string([97,98,99])      97       98       99IDL> print,string(byte([97,98,99]))abc

4.处理函数

  字符串操作都是通过字符串处理函数来实现的

(1) 字符串截取

  利用字符串操作函数提取采集时间

IDL> ;文件完整路径IDL> file=‘c:\temp\AMOD0320040707140331.hdf‘IDL> ;获取文件完整路径的文件名IDL> basename=file_baseName(file)IDL> print,basenameAMOD0320040707140331IDL> ;获取文件名中的时间部分字符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,srt1SRT1            UNDEFINED = <Undefined>IDL> print,str1abcde fghij klmno pqrst

(3) 空格去除

  函数有StrTrim和StrCompress,示例代码如下:

IDL> ;定义整型变量IDL> var=41IDL> ;转换为字符串   IDL> str=string(var)IDL> ;转换后前面包含空格IDL> help,strSTR             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字符数据值(字节型)
Bell7B
后退8B
水平TAB9B
换行10B
数值TAB11B
走纸12B
回车13B
ESC(取消)27B

IDL 字符串