IDL 字符串
2024-08-27 10:04:11
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 |
最新文章
- 【poj2455】 Secret Milking Machine
- jsoup解析HTML
- Effective C++ -----条款11: 在operator=中处理“自我赋值”
- JVM性能监控工具-Jvisualvm
- 复制本贴地址传给QQ/MSN好友的代码
- Crashing Robots 分类: POJ 2015-06-29 11:44 10人阅读 评论(0) 收藏
- No.005 Longest Palindromic Substring
- 在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境
- CSS content内容生成技术以及应用(转)
- extjs下拉框添加复选框
- IIS下 Yii Url重写
- SDK Hello world(直接使用SDK封装)
- MYSQL最大连接数修改
- 201521123115 《Java程序设计》第5周学习总结
- 【CJOJ2316】【模板】可持久化线段树
- STL容器的基本特性和特征
- JDBC-Oracle连接教程
- Echars 地图属性详解
- python---面对对象的三大特征
- swift语言的特征:类型系统与函数式编程:swift是面向类型和面向函数编程的语言