IDL学习:语法基础-字符串

1. 创建字符串

        IDL中可以用单引号‘’或双引号""来创建字符转       

>>a = 'hlz'
>>b = "hlz"
>>a eq b1

        创建字符串数组,可以利用中括号[]和逗号,相组合的方式进行创建

>>a = ['Hlz','XMU','厦门']
>>a
Hlz
XMU
厦门
>>help,a
A               STRING    = Array[3]
>>a[1]        ; 字符串数组是可以被索引,只能索引整个元素,无法索引某个元素组成
XMU

注:字符串是无法索引的,字符串数组可以,可以用字符串提取(截取)函数Strmid()实现,这个往往会用到字符转长度查看函数Strlen()、子字符串搜索函数Strpos()、去除字符串首尾空格函数Strtrim()。

语法:Result = STRMID(Expression, First_Character [, Length] , /REVERSE_OFFSET )

语法:Result = STRLEN(Expression)

语法:Result = STRPOS( Expression, Search_String [, Pos], /REVERSE_OFFSET, /REVERSE_SEARCH )

语法:Result = STRTRIM( String [, Flag] )

>>a = 'hlz-xiamenuniversuty'
>>a[2]
% Attempt to subscript A with <INT      ( 2)> is out of range.
% Execution halted at: $MAIN$          
>>a = 'hlz-xiamenuniversuty'  ; 包含前后空格的字符串a
>>print,Strlen(a)             ; 查看字符串a的长度22
>>a = Strtrim(a,2)            ; 移除两端空格,0:移除右端所有空格;1:移除左端所有空格;2:移除左右两端所有空格
>>print,Strlen(a)20
>>; 提取字符串中xiamen子字符串
>>index1 = Strpos(a,'xiamen')    ; 字符串'xiamen'在字符串a的的位置,返回子字符串的起始位置,若不存在则返回-1
>>index14
>>leng_str = Strlen('xiamen')    ; 字符串'xiamen'的长度
>>leng_str6
>>b = Strmid(a,index1,leng_str)    ; 提取字符串a中的子字符串
>>b
xiamen

创建空字符串,可以利用StrArr()函数,进行创建;

语法:Result = STRARR(D1[, ..., D8])

>>S = STRARR(4,3)               ; 创建4列3行的空的字符串数组
>>help,S
S               STRING    = Array[4, 3]
>>S[1,1]                        ; 查看元素值>>help,S[1,1]                   ; 查看元素值
<Expression>    STRING    = ''

2. 字符串操作

2.1 字符串的信息

        IDL中无法用length对象方法查看字符串的长度,可以利用字符转长度查看函数Strlen()查看

>>a = 'hlz-xiamenuniversuty'
>>a.LENGTH1
>>a.DIM0
>>print,Strlen(a)20

        当用函数Strlen()查看字符串数组时,会实现每个字符串元素的长度。

>>Files
e:\Test\1.tff
e:\Test\2.jpg
>>print,Strlen(files)13          13
>>help,Strlen(files)
<Expression>    LONG      = Array[2]

        此外,字符串数组中元素的个数可以用length方法、函数N_elements()获取。

>>Files
e:\Test\1.tff
e:\Test\2.jpg
>>print,files.LENGTH2
>>print,N_elements(files)2

2.2 字符串连接

        IDL中字符串连接和python一样,可以直接相加

>>a = 'hlz'
>>b = 'xmu'
>>c = a+'\'+b+'.jpg'
>>c
hlz\xmu.jpg

        字符串数组元素之间相连接,可以使用jion方法进行连接

>>a = ['Hlz','jiangxiprovince','jingdezhenCity']
>>b = a.Join('\')        ; 将a中所有元素用\相连接
>>b
Hlz\jiangxiprovince\jingdezhenCity

         注:当将字符串连接起来,组成一个文件路径是,最好用Path_sep()函数,该函数可以获取当前系统的分隔符,linux和win不同,分隔符是不一样的;win的分隔符为‘\’;linux的分隔符为‘/’。

2.3 字符串转换

        字符串大小写转化函数

        Strlowcase():将大写字符转化为小写字符

        Strupcase():将小写字符转化为大写字符

语法:Result = STRLOWCASE(String)

语法:Result = STRUPCASE(String)

>>a = 'Hulz_Jiangxi_OK'
>>print,Strlowcase(a)
hulz_jiangxi_ok
>>print,Strupcase(a)
HULZ_JIANGXI_OK

        首字母大写:那么问题来了,如何将首字母转化为大写,其余字母小写。

        首先,将字母转化为小写,提取除首字母以外的字符,提取第一个字母并转化为大写,最后合并。用到了Strlowcase()、Strupcase()、Strmid()函数。

>>a = 'Hulz_Jiangxi_OK'
>>print,Strlowcase(a)        ; 第一步:转化为小写
hulz_jiangxi_ok
>>print,Strmid(Strlowcase(a),1); 第二步:提取字符串(小写部分)
ulz_jiangxi_ok
>>print,Strupcase(Strmid(Strlowcase(a),0,1)); 第二步:提取字符串(大写部分)
H
>>print,Strupcase(Strmid(Strlowcase(a),0,1))+Strmid(Strlowcase(a),1);第三步:合并
Hulz_jiangxi_ok

        此外,字符串可以直接转化为字节型Byte数据,即将字母转化为对应的数字,反之亦然。

>>a = 'hlz'
>>b = Byte(a)
>>b104 108 122
>>help,b
B               BYTE      = Array[3]
>>c = long(a)
% Type conversion error: Unable to convertgiven STRING to Long.
% Detected at: $MAIN$   
>>d = long(Byte(a))
>>d104         108         122

2.4 字符提取

        可以用函数Strmid()实现,具体介绍见本博客第1节

2.5 常见的字符串函数

2.5.1 获取文件名

        可以用File_basename()函数,根据字符串获取文件名

        语法:Result = File_basename(Path [, RemoveSuffix] [, /FOLD_CASE])

>>fn = File_basename('e:\Test\sentinel1.tiff')
>>fn
sentinel1.tiff

2.5.2 获取文件路径

        可以用File_dirname()函数,根据字符串获取文件路径

        语法:Result = FILE_DIRNAME(Path [, /MARK_DIRECTORY])

>>dn = File_dirname('e:\Test\sentinel1.tiff')
>>dn
e:\Test

2.5.3 获取编译文件的完整路径

        可以用Routine_filepath()函数,根据编译的文件名,获取该文件的完整路径(字符串)。

        注:需先编译文件,才能使用。

        语法:Result = ROUTINE_FILEPATH( [Routine] [, /EITHER] [, /IS_FUNCTION] )

        返回的是一个包含两个元素的结构体,Result .Name表示文件名,Result.path表示文件路径。

>> .compile -v 'D:\Code\IDL\IDL_GUI\源码\chapter05\test_readF.pro'
% Compiled module: TEST_READF.
>> ROUTINE_FILEPATH('TEST_READF')
D:\Code\IDL\IDL_GUI\源码\chapter05\test_readF.pro

        注:在可以利用File_dirname()函数和File_basename()函数,获取文件路径和文件名。

 2.5.4 字符串比较

        字符串比较函数Strcmp(),可以比较两个字符串时候一样,

语法:Result = STRCMP( String1, String2 [, N], /FOLD_CASE )

参数N表示只比较前N个字符,关键字FOLD_CASE表示区分大小写

>>a = 'Hlz'
>>b ='hlz'
>>c = 'Hlz-fox'
>>print,Strcmp(a,b,/Fold_case)     ; 是否区分大小写,默认不区分1
>>print,Strcmp(a,b,Fold_case=0)    ; 区分大小写0
>>print,Strcmp(a,c)                ; 不加参数N0
>>print,Strcmp(a,c,2)              ; 只比较前2个字符1

2.5.5 总结

        以下是字符串处理历程(来源:官方文档)

        FILE_BASENAME - 返回文件路径的基本名称。

        FILE_DIRNAME - 返回文件路径的目录名

        I18N_MULTIBYTETOUTF8 - 将多字节转换为 UTF8。

        I18N_MULTIBYTETOWIDECHAR - 将多字节转换为 UTF-16、宽字符 (Unicode)。

        I18N_UTF8TOMULTIBYTE - 将 UTF-8 转换为多字节。

        I18N_WIDECHARTOMULTIBYTE - 将 UTF-16、宽字符 (Unicode) 转换为多字节。

        IDL_BASE64 - 在字节数组和 MIME Base64 编码的标量字符串之间转换。

        READS - 从字符串变量执行格式化的输入/输出。

        STRCMP - 比较两个字符串

        STRCOMPRESS - 从字符串中删除空格

        STREGEX - 执行正则表达式匹配

        STRING - 将参数转换为字符串类型

        STRJOIN - 将字符串标量或数组折叠成合并字符串

        STRLEN - 返回字符串的长度

        STRLOWCASE - 将字符串转换为小写

        STRMATCH - 将搜索字符串与输入字符串表达式进行比较。

        STRMID - 从字符串中提取子字符串

        STRPOS - 在字符串中查找第一次出现的子字符串

        STRPUT - 将一个字符串的内容插入另一个字符串

        STRSPLIT - 根据指定的模式将其输入字符串参数拆分为单独的子字符串

        STRTRIM - 从字符串中删除前导和/或尾随空格

        STRUPCASE - 将字符串转换为大写

3. 特殊字符

3.1 包含引号的字符转

        字符串中包含引号,则最后用另一种引号创建。

例如:打印:I'm Hlz, 打印:你真"棒"!       

>>print,"I'm Hlz"
I'm Hlz
>>print,'I'm Hlz'print,'I'm Hlz'^
% Syntax error.
你真"棒"!
>>print,"你真"棒"! " print,"你真"棒"! " ^
% Syntax error.print,"你真"棒"! " ^
% Illegal character in program text. 

         如果字符串中既有单引号、又有双引号的字符串该如何处理?可以分开输入,在合并!

>>print,"I'm Hlz"+'你真"棒"!'
I'm Hlz你真"棒"!

3.2 特殊字符

        略……(下次补充)        

注:后续将针对字符串,整理相关的函数

不足之处,敬请斧正!

路漫漫其修远兮,吾将上下而求索

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246491.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

epoll监听文件_epoll使用详解

epoll介绍epoll的行为与poll(2)相似&#xff0c;监视多个有IO事件的文件描述符。epoll除了提供select/poll那种IO事件的水平触发(Level Triggered)外&#xff0c;还提供了边缘触发(Edge Triggered)&#xff0c;这就使得用户空间程序有可能缓存IO状态&#xff0c;减少epoll_wait…

IDL学习:语法基础-结构体

结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“属性”&#xff08;亦称之为“成员”&#xff09;&#xff0c;这些成员可以是变量、数组、字符串以及结构等类型数据。IDL中常用于函数返回值&#xff08;PS&#xff1a;因为IDL中函数最多…

hdfs数据节点分发什么协议_分布式文件系统HDFS解析

Hadoop 主要由HDFS和MapReduce 引擎两部分组成。最底部是HDFS&#xff0c;它存储Hadoop 集群中所有存储节点上的文件。HDFS 的上一层是MapReduce 引擎&#xff0c;该引擎由JobTrackers 和TaskTrackers组成。一、HDFS基本概念1、数据块HDFS默认的最基本的存储单位是64M的数据块&…

IDL学习:语法基础-指针、链表

本博客将介绍IDL语法基础中的指针、链表的创建及相关的用法。记录自己的学习整理理解 。 1. 指针 指针也就是内存地址&#xff0c;是用来存放内存地址的变量&#xff0c;指针可以理解为通讯地址&#xff0c;可以通过通讯地址查询具体的信息&#xff0c;而指针可以查询所指向的…

计算机等级考试java题型_计算机二级考试《java》试题及答案

计算机二级考试《java》试题及答案2017下半年计算机二级考试将于9月23日-26日举行&#xff0c;下面是小编为大家整理的计算机二级考试《java》试题及答案&#xff0c;欢迎参考~计算机二级考试《java》试题及答案一、判断题1. Java语言中的数组元素下标总是从0开始&#xff0c;下…

IDL学习:语法基础-对象、哈希表

本博客将介绍IDL语法基础中的对象、哈希表的创建及相关的操作发法。哈希表、链表都可以看做对象&#xff0c;包含了add、reserve、Sort等方法。记录自己的学习整理理解 。 1. 对象 对象是数据&#xff08;属性&#xff09;和程序&#xff08;方法&#xff09;封装在一起的实体…

hdfs中8031是什么端口号_在宿主机如何访问docker中hadoop的hdfs:ip:9000啊, 端口映射出来啊...

本人有一个3节点hadoop, 启动了3个docker容器, 众所周知, docker容器内服务的端口是可以映射到宿主机的端口的, 我采用-P将容器的所有端口映射到主机端口, 命令如下:docker run -it -v /Users/yc/hadoop/docker:/test -P -h h1 --name h1 sequenceiq/hadoop-docker /etc/bootst…

linux nginx安启动_linux下nginx编译安装启动

1、在指定目录解压包命令&#xff1a;tar -zxvf nginx-1.10.3.tar.gz解压后&#xff0c;在nginx-1.10.3同级目录下&#xff0c;创建nginx目录(编译安装目录)2、编译安装nginx是需要编译安装&#xff0c;在nginx-1.10.3目录下执行命令命令&#xff1a; ./configure --prefix/usr…

linux怎样自制库_如何制作自己的LINUX系统?

创建工作目录使用busybox生成根文件系统中的bin等目录创建服务启动脚本与inittab文件与fstab文件创建根文件系统的init脚本(initrc使用linuxrc&#xff0c;而initramfs使用init脚本&#xff0c;所以先删除busybox为initrc生成的默认的linuxrc文件&#xff0c;rm-rf$LINUX/linux…

茶苑机器人怎么看出来_小儿脑瘫怎么看出来?出现4个异常,该早点去看医生...

小儿脑瘫表现出来的症状是多种多样的&#xff0c;一般儿童三个月就能够展现出来&#xff0c;家长应该多观察孩子的一些异常情况&#xff0c;及时去医院做诊断&#xff0c;做到防患于未然。小儿脑瘫的表现有哪些&#xff1f;1、运动发育明显落后正常的儿童3个月能抬头&#xff0…

itil 容量管理流程_探索ITIL和DevOps的边界

其实在今天的运维领域&#xff0c;ITIL和DevOps之间的冲突还是蛮明显的&#xff0c;有些是表现在产品上&#xff0c;有些是表现在思维/理念上。ITIL在产品上以流程为核心目标的设计&#xff0c;很难满足自动化的要求&#xff0c;DevOps极力推崇工具/平台/自服务文化&#xff1b…

本博客IDL 学习目录

本博客非技术博客&#xff0c;而是总结我在学习IDL、编写IDL代码方面的博客&#xff0c;旨在方便各位可以通过我这篇博客直接选感兴趣的部分。本博客将会持续更新&#xff0c;不断补充…… IDL 学习 1. IDL 文本编码、代码补全快捷方式、IDL doc、格式器、行号显示设置 2. ID…

python中一个汉字是几个字节_数据库中汉字是几个字节

不依赖微软的库和WindowsAPI&#xff0c;没能试验成功&#xff01;######问题已解决&#xff0c;谢谢。######看这篇文章&#xff0c;讲的很清楚(&#xff1a;)这是从其他地方拷贝过来的) UNICODE环境设置 在安装Visual Studio时&#xff0c;在选择VC时需要加入unicode选项&…

Matlab 中@ 的用法

Matlab 中的用法主要有&#xff1a;函数句柄、函数表达式、调用父类以及类文件夹。 前两种有很多介绍&#xff0c;后两种涉及类&#xff0c;介绍的人很少。前2个例子&#xff0c;参考了其它博客&#xff0c;总感觉用法都写的不全&#xff0c;所以在此基础上&#xff0c;补充了3…

金蝶k3单据编码规则_金蝶K3存货跌价案例教程

目录案例介绍 后台设置 计提存货跌价准备显示计提表计提凭证模板设置计提凭证生成手工结转跌价准备案例介绍关于存货跌价准备&#xff0c;企业会计准则第1号存货相关规定如下&#xff1a;第十五条 资产负债表日&#xff0c;存货应当按照成本与可变现净值孰低计量。存货成本高于…

maven 关联源码插件_繁琐的任务简单化,Maven的插件机制

Maven的生命周期与Maven插件是项目绑定的&#xff0c;生命周期可以理解为项目构建步骤的集合&#xff0c;它定义了各个构建环节的执行顺序&#xff0c;有了这个顺序&#xff0c;Maven 就可以自动化的执行构建命令。Maven 的核心程序中定义了抽象的生命周期&#xff0c;生命周期…

php配置email支持_配置以及实现mail()函数

配置sendmail.ini文件error_logfileerror.log; create debug log as debug.log (defaults to same directory as sendmail.exe); uncomment to enable debuggingdebug_logfiledebug.log; if your smtp server requires authentication, modify the following two linesauth_use…

树莓派控制电机转速_怎样用树莓派控制直流电机的方向和速度

步骤1&#xff1a;DC的控制方向通过RPi电机使用RPi控制直流电机我们的下一个任务是使用树莓派上的python脚本和GPIO头控制直流电动机&#xff0c;这将在我们的脑海中产生一幅“机器人如何工作”的图景。您可以根据外面的天气来控制房间的风扇(因为您知道rpi会使用传感器)。完成…

双稳态继电器工作原理图_固态继电器只有单一的作用吗?带你了解不一样的固态继电器...

固态继电器简写SSR(Solid State Relay)&#xff0c;是一种全部又分离的固态电子元件(如光耦合器、晶体管、可控硅、电阻、电容、集成电路等)组成的无触点电阻开关&#xff0c;这里请注意&#xff0c;相比较与继电器、接触器&#xff0c;固态继电器是无触点的耦合开关。因此&…

c++switch实现猜拳_C语言实现人机猜拳游戏,非常适合C++小白练习的项目!

学习迷茫遇到问题了吗&#xff1f;现在关注微信公众号&#xff1a;C程序编程 免费获取进阶指导和学习资料&#xff01;本文福利在文末&#xff01;这是一个简单的猜拳游戏&#xff08;剪子包子锤&#xff09;&#xff0c;让你与电脑对决。你出的拳头由你自己决定&#xff0c;电…