Fortran字符串处理

Fortran入门教程(二)——数据类型 数据类型 数据类型是指在计算机中能够记录文本、数值等的数据单位。算法处理的对象是数据,而数据是以某种特定的形式(如整数、实数、字符等形式)存在的。不同的数据之间往往还存在某些联系,例如由若干个整数组成一个整数数组。 1. 变量声明 隐式声明(不再使用) 隐式声明是传统 Fortran 语言预先定义且无须通过类型声明语句对变量类型进行定义,习惯称为I-N规则。Fortran 规定,凡以字母I、J、K、L、M、N(无论大写还是 小写)6个字母开头的变量名,如无另外说明则为整型变量。以其他字母开头的变量被默认为 阅读详情
看到一篇不错的文章,不知道是不是哪本书里面的,一定要仔细看看了
=========

a)    字符变量


字符常数的一般形式是由一对单引号‘ ’或一对双引号“”限定的一串字符。字符串中的字符,允许是PORTRAN字符集的任意字符,如果系统还支持其它字符,例如汉字、希腊字、化学符号、数学符号,也可引入字符串内,用一对‘ ’或“”界定。

字符型数据除了有类型、种别外,比其它类型还多了一个长度特性,即规定它有几个字符数。字符型说明语句的关键字是CHARACTER,其长度说明方法是紧跟在CHARACTER后面写一对括号,括号内写LEN=字符长度。其一般形式是:


CHARACTER[(LEN=整型字符长度表达式[,KIND=种别值])][,属性说明] :: 变量名表[=初始值]


其中LEN后面的整常数表达式规定被说明字符变量长度,为正整数,LEN的参数与KIND的参数都写在括号内,次序可以任意。在字符型说明语句中,长度说明必须有,不可省略,种别参数可以省略,此时取标准值。仅有关键字CHARACTER而没有括号时认为字符是一个字节长。可以省去LEN=及KTND=,只写参数值,此时字符长度必须写在前面。只有长度说明的语句可分为有括号和无括号两种,例如:

CHARACTER(LEN=12,KIND=1) :: A,B

CHARACTER(KIND=1,LEN=12) :: A,B

CHARACTER(12,1) :: A,B

CHARACTER*12 :: A,B

都是等价的,前者说明X、Y2是字符型变量,种别参数为3.每个变量长度为12。后者说明表明长度为12,种别值为1。

长度也可以写成一个*号,表示长度暂不确定,待以后与程序中实际需要的长度相一致。例如:

CHARACTER(LEN=*),PARAMETER :: C_NAME=‘GIRL’

CHARACTER(LEN=*),PARAMETER :: C_NAME=‘BOY’

都是合法的说明语句,说明字符常量C_NAME,前者长度为4,后者长度为3。

用字符型变量作为过程的哑元时,可以用正整数作长度,也可以把*作长度,后者可以与任何长度的实元作哑实结合,相当于以实元的具体长度为哑元的长度。

CHARACTER后面说明的长度是其后所有实体名的公共长度,如果某一变量的长度与其它不同,可以在其变量名后标出自己的特有长度,方法是在变量名后写上*及长度。例加:

CHARACTER(LEN=12) :: A,B*5,C,D*7,E


b)    字符子串

字符数据中某一部分相连的字符为字符子串,也可以作为一个实体与字符变量一样参加操作。字符子串的一般形式是:V(e1:e2)。V是字符型实体名,包括字符变量名、字符函数名、字符数组元素等等。e1,e2是整型表达式或正整常数,e1的值指明子串在V中的起始列号,e2的值指明子串在V中的终止列号。如果e1省略,表示子串从第一个字符取起;e2省略,表示子串取到末尾;如e1,e2都省略,表示子串从头取到尾。例如:设有字符变量A,其取值为‘ABCDE12345FGH’,则下面的子串取值为:

A(3:11)    -> ‘CDE12345F’,

A(I+4:9)   -> ‘E1234’(I=1),‘1234’(I=2)

A(:5)      -> ‘ABCDE’

A(11:)     -> ‘FGH’

A(:)       -> ‘ABCDE12345FGH’

A(3:3)     -> ‘C’

子串在程序中可直接引用,也可被其它字符实体再赋值,因此可使程序员任意地取出一部分字符,并按需要替换一部分字符,非常灵活。例如:PRINT *,(A(I:I+1),I=6,9),可以打印‘12’、‘23’、‘34’、‘45’。


c)    字符操作与赋值

字符操作符只有一个,称并置符,为两相连的斜杠“//”,其功能是把前后两个字符串拼连在一起。表达式中的操作对象可以是字符变量,字符常数、字符子串、字符函数值、字符数组元素等。例如:‘AB’//‘CDE’的值为‘ABCDE’。C//‘ABC’//A(2:6)//B(1:4)//D是把几个字符串连在一起。

字符赋值语句的一般形式是:字符变量=字符表达式。在字符赋值语句中,要求两边种别值一致,此外还有长度问题。当两边长度不等时,赋值时以左边的字符变量说明长度为准,当右边小于左边时,尾部补空格,否则将右边尾部的多余部分截去。


d)    字符比较

对每种机器,系统都把本机上可以使用的各种字符按先后排列成某种次序,每个字符在排序中有确定的位置,称为排序号。有了排序号,字符之间就可以比较大小及相等与否,组成关系表达式。

各种系统字符排序不一样,同一字符,在不同机上排序值可能不一样。以ASCII码为例,有128个字符,它的第一个字符序号为零,最后一个序号为127。例如A的排序号为65,数码0的排序号为32。序号0~31及序号127的字符称为控制字符,用来控制操作,它们是非打印字符,屏幕上不可见,通常编程时可于忽略。从ASCII码字符集的排序可以看出,小写英文字母排序在大写英文字母之后,它们的序号不同。因此,虽然在书写FORTRAN语句时,大小写字母是等价的,但当进行字符操作和字符比较时必须看成是不同的。


字符作比较实际上是比较它们的序号大小。字符比较的一般形式是两端为字符表达式的关系表达式:<字符表达式><关系操作符><字符表达式>。例如:‘A’<‘B’的比较结果为真,C1//‘CCTV’>=(‘XY’//C2)//C3 式当C1、C2、C3是字符型变量名时是合法的,要先计算两端字符表达式的值,而后比较它们是否满足≥关系。比较的方法随关系操作符而异:


image001.gif

2011-8-2 10:43:25 上传
下载附件 (419 Bytes)
          >、<关系操作符

只要两边表达式第一个字符不等就可求得关系表达式的值。如:‘ABC’>‘CDE’,因第一个字符‘A’<‘C’不满足>关系,故表达式的逻辑值为假,后面各位不再比较。如果第一位相等,则对第二位字符作比较得出整个关系表达式值为‘真’或‘假’,如此类推。如果两端字符表达式的值长度不等,则短的一端尾部添空格再按位比较。如:‘ABC12’>‘ABC’,因在ASCII码中‘1’的序号为49,空格的序号为32。故上述关系表达式的值为真。


          == 关系操作符

先作第一位比较,如不等,关系表达式值为‘假’,如相等,再比较第二位,一直比较到最后一位都相等(不足添空格),才能得出关系表达式值为真,否则值都为假。如作不等/=比较,只要有一位不等就可得出表达式的值为真,否则一直比较到末位。设有字符型变量名为NAME,其值为‘Einstein’,则关系表达式:

NAME==‘Einstein’               ->   真

NAME==‘Ein’//‘stein’       ->   真

NAME/=‘Ein’//‘Stein’      ->   真

NAME==‘EINSTEIN’              ->   假


e)      字符函数

F90的内部函数中有许多与字符型操作有关的函数供用户使用,可以很方便地进行各种文本编辑。

          字符与数值相互转换的函数:ICHAR,CHAR,IACHR,ACHAR

F90允许把字符型的值转换成整型值(已知字符,取字符型的序号数值),也允许把数值型的值转换成字符型的值(已知序号,取它对应的字符)。函数ICHAR的功能是把字符型转换成数值,它的引用方式是:ICHAR(字符实体)。这里自变量的字符实体不一定是单个字符,也可以是字符变量、字符子串、字符数组元素、字符函数值等等以及由它们组成的字符表达式。函数值ICHAR返回字符实体第一个字符的序号值。如果指明要按照ASCII码求它的序号,则本功能的函数名应改写为IACHAR,例如:

print *, ichar(‘A’), ichar(‘A_dog’), ichar(‘A_dog’//‘in_my_room’)

打印的结果是3个数字65(A的序号是65)。

函数CHAR的功能是把一个序号转换成它的字符。它的引用方式是:CHAR(整型数值表达式)。先计算整型表达式的值,再以这个值为序号,返回相应的单个字符,如CHAR(65)的值是‘A’。如果按照ASCII码求它的对应字符,则函数名为ACHAR。函数CHAR可以有两个自变量,此时引用形式为:CHAR(序号值,种别值)。缺省种别值时表示取标准值即ASCII码。

有了字符与数值的转换函数,就可处理字符循环。例如设要连续打印 DIMENSION A,DIMENSION B,…,DIMENSION Z,则程序可写成:

DO I=0,25

PRINT *,‘DIMENSION ’//CHAR(I+6)

END DO


          求字符串长度的函数:LEN

函数LEN的功能是求出一个字符实体的长度,引用方式是:LEN(字符实体)。函数值返回一个正整教,为该字符实体的长度(包括尾随空格、中间空格在内)。如:LEN(‘ABCD 12 ’)的值是8(6个字符数加2个空格数)。


          不计尾部空格的字符串长度函数:LEN_TRIM

如:LEN_TRIM(‘ABCD 12 ’)的值是7(6个字符数加1个空格数)。


          求子串在父串位置的函数:INDEX

函数INDEX的功能找出指定子串在字符串内的指定位置,其引用方式是:INDEX(父串,子串)。函数值返回一个正整数,指明子串在父串中是从第几个字符开始的。父串、子串都可以是各种形式的字符实体。如果第二个字符实体不是第一个字符实体的子串,返回函数值为0。如:INDEX(‘Einstein’,‘s’)的值4。


          验证字符串的函数:VERIFY

函数VERIFY的功能确认指定的字符集是否包含了给定字符串中所有的字符,其引用方式是:VERIFY(字符串,字符集)。函数值返回一个正整数,指明字符串中与字符集相异的第一个字符是从左边第几个字符开始的。如果没有相异的字符,则返回函数值为0。如:VERIFY(‘Einstein’,‘instant’)的值为1,VERIFY(‘instant’,‘Einstein’)的值为5,VERIFY(‘Einstein’,‘abcdefghijklmnABCDEFGHIJKLMN’)的值为4。


          除去尾部空格函数:TRIM

如:TRIM(‘ABCD 12 ’)//‘34’的值是‘ABCD 1234’。


          比较字符大小的函数:LGE、LGT、LLE、LLT


比较字符大小的四个函数都有两个字符型实体作自变量,用来判断它们之间是否满足各种>、<关系的,其函数值是一个逻辑值,满足该不等关系为真,否则为假。它们的引用方式与功能如下:


引用方式

含   义

例

LGE(a1,a2)

a1是否≥a2

LGE(‘A’,‘B’)值为假

LGT(a1,a2)

a1是否>a2

LGT(‘A’,‘B’)值为假

LLE(a1,a2)

a1是否≤a2

LLE(‘A’,‘B’)值为真

LLT(a1,a2)

a2是否<a2

LLT(‘A’,‘B’)值为真

Fortran——变量和常量 Fortran中的变量和常量的声明、用法以及注意事项 阅读详情

相关推荐

FORTRAN语言的字符串处理

在FORTRAN中,字符串实际上是一系列字符的数组。FORTRAN 77 及其之前的版本对字符串的处理相对原始,通常使用字符数组来存储字符串。FORTRAN 90及更高版本引入了更灵活的字符串处理功能,可以使用CHARACTER类型直接定义字符串。fortran以上代码定义了一个长度为10的字符串myString。在FORTRAN 90及更高版本中,还可以通过进行动态分配。例如,动态定义一个字符长度为n的字符串:```fortrann = 20```

2501_90485607的博客 655

fortran 常用字符函数

6.3 常用字符函数 6.3.1 字符与数值转换函数 •这是一系列函数的总称,涉及到4个基本函数:ICHAR,CHAR,IACHR和ACHAR函数。 •Fortran 90/95中允许把字符型的值转换成数值型的值(已知字符得到字符在某种字符集中的序号数值),也可把数值型的值转换成字符型的值(已知字符在某种字符集中的序号数值进而得到该位置上的字符)。 •函数ICHAR的作用是根据字符得到

奋斗中的毛毛虫 1万+

【鸿蒙游戏上架审核规范指南】

华为鸿蒙游戏上架审核规范指南摘要

weixin_44161102的博客 924

Fortran学习:chapter6

Fortran95第六章

weixin_45774613的博客 1268

BAPI_REPMANCONF1_CREATE_MTS实战:从MFBF事务码到精准零件反冲的代码级解析

本文深入解析了如何通过BAPI_REPMANCONF1_CREATE_MTS函数实现SAP生产模块中的零件反冲自动化。文章对比了MFBF事务码的手动操作与BAPI编程的优劣,详细拆解了函数的核心参数、数据结构、调用流程及事务控制,并提供了从数据准备到凭证获取的完整代码示例与避坑指南,帮助开发者实现高效、精准的批量投料过账。

weixin_29240343的博客 191

SAP 第三方销售

第三方销售

yanzibing99的博客 3514

c语言哑元,Fortran字符串处理

看到一篇不错的文章,不知道是不是哪本书里面的,一定要仔细看看了=========a) 字符变量字符常数的一般形式是由一对单引号‘ ’或一对双引号“”限定的一串字符。字符串中的字符,允许是PORTRAN字符集的任意字符,如果系统还支持其它字符,例如汉字、希腊字、化学符号、数学符号,也可引入字符串内,用一对‘ ’或“”界定。字符型数据除了有类型、种别外,比其它类型还多了一个长度特性,即规定它有几...

weixin_32705179的博客 731

小红书私信接口与Hook技术实战:微信跳转卡片的合规与破解之道

本文深入探讨了小红书私信接口与Hook技术的实战应用,重点解析了微信跳转卡片的合规使用与破解方法。通过官方私信接口的合规玩法与Xposed框架的Hook技术对比,为开发者提供了技术选型指南和实战建议,帮助实现高效的用户跳转与转化。

weixin_30399821的博客 737

fortran 数字转字符串处理

数字转字符串

weixin_44004788的博客 726

笔试题-2023-思特威-数字电路设计(CIS)【纯净题目版】

10 笔试题-2023-思特威-数字电路设计(CIS)【纯净题目版】

w0shishabi的博客 1472

Claude Code 100个真实案例 - 用AI设计Arduino PCB电路板(硬件小白也能画板)

本案例展示如何使用 Claude Code 配合 KiCad 的 Python 脚本接口,从零设计一块 Arduino 传感器扩展板 PCB。从原理图符号创建、网表生成到 PCB 布局布线,全程自动化完成,最终输出可直接发给工厂打样的 Gerber 文件。

yueyeguzhuo的专栏 442

Fortran文本字符串计算,字符串分割,字符替换

1.统计文件中字符数目 integer :: iCount, iErr character(len=512) :: cStr iCount=0 open(unit=12, file=filename) do while (.true.) read(12, '(A512)', iostat=iErr)cStr if(iErr/=0)exit iCount=iCount+len_trim(cStr) end do close(12) write(*, *)'共包含',iCount,'个字符' 2.统计一行

xk6891的专栏 5370

Python爬虫:招聘网站岗位要求、薪资与求职者数据爬取与分析

通过本文的教程,我们学习了如何通过 Python 编写招聘数据爬虫,爬取招聘网站上的岗位要求、薪资和求职者数据,并通过数据存储、清洗、分析和可视化,获取有价值的信息。网站如智联招聘、猎云网、前程无忧等,都提供了大量的招聘信息,包括岗位要求、薪资范围、工作经验、学位要求、招聘公司等。本文将介绍如何通过 Python 编写爬虫,爬取招聘网站上的岗位要求、薪资、求职者数据,并通过数据存储、分析和可视化等手段,为求职者或招聘者提供实用的信息和决策支持。通过循环抓取多个页面的数据,可以获取不同岗位的信息。

2201_76125261的博客 723

Fortran中处理字符串数字和文件的模块StrNum

Fortran中处理字符串数字和文件的模块: 测试程序如下: include"StrNum.F90" !----------------------------------------- program main use StrNum implicit none !----------------------------------------- integer :: count,i,j ,k

网海水手 6479

ABAP 大规模数据并行处理实战,六套 Parallel Processing Framework 如何选,性能调优真正该盯住什么

如果今天真的面对那份执行 14 个小时的生产报表,我不会马上把原来的 Loop 改成 50 个aRFC。我会先用 SAT、ST12、SQL Monitor 和 HANA 侧工具确认时间到底花在哪里。如果 90% 时间其实消耗在一条低效 SQL 上,Parallel Processing 只是让 50 个 Worker 同时执行那条低效 SQL,数据库会比原来更痛苦。应该先把串行逻辑本身优化到合理水平。该做 Set-based Processing 的地方先交给 HANA。该避免SELECT。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 149

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

[转载]:Fortran字符串的故事

[转载]:Fortran字符串的故事 一.Fortran 字符串与C字符串的区别Fortran的字符串处理能力其实很弱,关于字符串的语法还很落后。它与C字符串最大的区别就是:Fortran字符串是固定长度的,没有 \0结束符。另外,Fortran也...

493

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

fortran 去掉字符两边的空格

len 字符串的长度 trim 去掉字符串右边的空格 len_trim 不算字符串右边的空格的字符串的长度 lnblnk 字符串最后一个非空格的字符的位置 index/scan 寻找指定字符的在字符串出现的位置 verify 第一个非指定字符在字符串出现的位置 adjustl 移动字符串左对齐,去掉打头的空格 adjustr 移动字符串...

Ma_Hong_Kai的博客 9375

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: FNL资料的变量说明
下一篇: 用Excel+VBA+SQL Server进行数据处理
dawran
博客等级 码龄23年 35粉丝 14原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值