添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

Fortran系列:

字符串拼接和切片

fortran 中,字符可以用单引号或者双引号表示,通过 character 声明时,可以通过 len() 函数指定字符串的最大长度,这些都是早在介绍 fortran 类型时就已经提到过的。

如果用数组的角度理解,字符串就是由字符组成是数组,所以可通过 (:) 语法进行索引。此外,通过 // 运算符可以对字符串进行拼接。

program tinycool
implicit none
   character(len = 15) :: surname, firstname 
   character(len = 30):: name
   firstname = 'tiny' 
   surname = 'cool'
   name = firstname//surname
   print *, name
   print *, name(:5)
end program tinycool
>a.exe
 tiny           cool

trim去除空格

上面输出的name中间出现了冗长的空格,这是因为surname的长度是15,但只有4个可见字符,剩下的就都用空格补全了,这太难受了,通过trim函数可以去除这个东西

program tinycool
implicit none
   character(len = 15) :: surname, firstname 
   character(len = 30):: name
   firstname = 'tiny' 
   surname = 'cool'
   name = trim(firstname)//surname
   print *, name
   print *, name(:5)
end program tinycool
>a.exe
 tinycool
 tinyc

由于字符串规定的长度往往大于可见字符的长度,所以可见字符的位置就有很大的活动空间。通过adjustladjustr可以让字符居左或者居右

program tinycool
implicit none
   character(len = 15) :: surname, firstname 
   character(len = 30):: name
   firstname = 'tiny' 
   surname = 'cool'
   name = adjustl(firstname)//adjustr(surname)
   print *, name
   name = adjustr(firstname)//adjustl(surname)
   print *, name
end program tinycool
>a.exe
 tiny                      cool
            tinycool

查询和索引

通过index函数,可以在一个字符串中找到另一个字符串所在的位置,如果返回值为0,代表不存在

program tinycool
implicit none
   character(len = 15) :: surname, firstname 
   character(len = 30):: name
   firstname = 'tiny' 
   surname = 'cool'
   name = trim(firstname)//surname
   if(index(name, trim(surname)) == 0)then
      print *, 'test is not found'
      print *, 'test is found at index: ', index(name, trim(surname))
   end if
end program tinycool
>a.exe
 test is found at index:            5

字符虽然看上去和数字没什么关系,但其编码过程仍然需要与数字进行意义对应,fortran中提供了ASCII码的转换函数

  • ACHAR(n) 将ASCII转为字符, datatypes 数据类型和结构。 2. MATLAB 工作环境。 这是你作为 MATLAB 用户或程序编制员的一套工具和设施。 3. 制图这是 MATLAB 制图系统。它为 2 维上,而且三维的数据可视化,图象处理,动画片制作和表示图形 包括高阶的指令在内。它也为包括低阶的指令在内,允许你建造完整的图形用户界面(GUIs),MATLAB 应 用。制图法功能在 MATLAB 工具箱中被组织成 5 文件夹: graph2d 2-的维数上的图表。 graph3d 三维的图表。 specgraph 专业化图表。 graphics 制图法。 uitools 图形用户界面工具。 4. MATLAB 的数学的函数库。 数学和分析的功能在 MATLAB 工具箱中被组织成 8 文件夹。 elmat 初步矩阵,和矩阵操作。 elfun 初步的数学函数。 specfun 专门的数学函数。 matfun 矩阵函数-用数字表示的线性的代数。 datafun 数据分析和傅立叶变换。 polyfun 插入物,并且多项式。 funfun 功能函数。 sparfun 稀少矩阵。 5. MATLAB 应用程序接口(API)。 这是允许你写 C、Fortran 语言与 MATLAB 交互。MATLAB 系统由5 主要的部分构成: 1. MATLAB 语言。 这是高阶的矩阵/数组语言,带控制流动陈述,函数,数据结构,输入/输出,而且面向 目标的编程特点。 Ops 操作符和特殊字符。 Lang 程序设计语言作。 strfun 字符串。 iofun 输入/输出。 timefun 时期和标有日期。 datatypes 数据类型和结构。 2. MATLAB 工作环境。 这是你作为 MATLAB 用户或程序编制员的一套工具和设施。 3. 制图这是 MATLAB 制图系统。它为 2 维上,而且三维的数据可视化,图象处理,动画片制作和表示图形 包括高阶的指令在内。它也为包括低阶的指令在内,允许你建造完整的图形用户界面(GUIs),MATLAB 应 用。制图法功能在 MATLAB 工具箱中被组织成 5 文件夹: graph2d 2-的维数上的图表。 graph3d 三维的图表。 specgraph 专业化图表。 graphics 制图法。 uitools 图形用户界面工具。 4. MATLAB 的数学的函数库。 数学和分析的功能在 MATLAB 工具箱中被组织成 8 文件夹。 elmat 初步矩阵,和矩阵操作。 elfun 初步的数学函数。 specfun 专门的数学函数。
    Visual C++ 插件系列介绍 说到Visual C++的插件,大家可能只有想到Visual Assist吧。天真!行内开发的插件可只有这个!?下面介绍一下vc6.0的其他插件。 Visual Assist(强烈推荐) 功能:VA从5.0一直到现在的VAX,功能越来越强大,除了以前版本中的自动识别各种关键字,系统函数,成员变量,自动给出输入提示,自动更正大小写错误,自动标示错误等等以外,最新的版本中还在WorkSpace窗口中加入一个VA View,可以更方便的查找工程中的文件、类和变量。 WndTabs(强烈推荐) 功能:WndTabs主要是在编辑窗口中显示了所有已经打开的文件,在VC中能够更方便的操作这些文件,比如修改文件属性,copy文件路径、文件名等,并且还开放源代码,你要是愿意的话,可以添加自己很兴趣的功能。 LineCounter 功能:用来统计整个工程的代码行数,包括总行数、代码行数、注释行数、空行数等,并且对多个工程一起统计时,不会把相同的文件计算多次. Spelly 功能:一个拼写检查的插件,可以对整个文件或所选部分进行拼写检查,支持C/C++/C#, VB, Fortran 和HTML。 SourceStyler C++ 功能:此插件是针对C++的一个格式化工具,可以针对自己的编码习惯,选择一种编码风格,也可以自己定义,而且定义非常详细,有表达式、指针、模板、类、枚举等十几种,肯定能满足你的需要。 Numega BoundsChecker(强烈推荐) 功能:是针对Visual C++6.0应用程序的最为全面的错误检测工具。BoundsChecker 能自动指出静态,堆栈内存错误和资源泄漏问题。BoundsChecker 能够校验最新的 Windows APIs,包括 ActiveX, DirectX, OLE/COM, ODBC等等。能够发现与 Windows 平台兼容性。 BCGControlBar Library 功能:非常好的一套应用于vc6的界面扩展类库,轻松的作出 vc2003 的界面。并且给了各种界面例子,如vc.net、outlook、更换皮肤等等。 Comment Wizard 功能:Visual C++插件,提供了Visual C++源代码注解标准化与自动化功能。在它的帮助下,您可快速创建标头文件信息注解,文件中模块注解, C++处理方式,以及C语言功能与历史校正功能注解,等等。 String watch Microsoft Visual Studio add-in 功能:调试时查看字符串的。 Tabbar插件 功能:显示多tab的插件
    Fortran调用C 读取C字符串 在C中,字符串表示为char *数组,以\NUL charakter终止。 与fortran不同,这些字符串没有固定的大小。 要将它们转换为Fortran样式字符,可以使用C的strlen函数: function get_string ( c_pointer ) result(f_string) use, intrinsic :: iso_c_binding implicit none type(c_ptr), intent ( in ) :: c_pointer character (len = :), pointer :: f_ptr characte
    声明:本文翻译自:https://www.tutorialspoint.com/fortran/fortran_strings.htm 由于这一节内容与上节内容多有重复,所以重复的部分本文不再累赘。 1. 字符串声明 character(len=20) :: str = "hello, world!" 2. 提取子字符串fortran中,可以通过下标提取子字符串。 Program subS...
    1、如果想要合并的字符串在一个序列或可迭代对象中,那么将它们合并起来的最快方法就是使用join()方法 parts = ['Is', 'Chicago', 'Not', 'Chicago?'] ' '.join(parts) Out[3]: 'Is Chicago Not Chicago?' ','.join(parts) Out[4]: 'Is,Chic...
    fortran语言可以将字符视为单个字符或是连续的字符串。 字符可以时基本字符集的任意字符。包括letters,decimal digits,underscore和21个特殊字符。 字符常量是一个固定值的字符串。 使用character可以声明字符或是字符串变量。其长度在声明的同时可以用len来指定。例如character(len=10) :: c 如果没有用len来指定,默认长度为1.可以通过下...
    数据类型是指在计算机中能够记录文本、数值等的数据单位。算法处理的对象是数据,而数据是以某种特定的形式(如整数、实数、字符等形式)存在的。不同的数据之间往往还存在某些联系,例如由若干个整数组成一个整数数组。 1. 变量声明 隐式声明(不再使用) 隐式声明是传统 Fortran 语言预先定义且无须通过类型声明语句对变量类型进行定义,习惯称为I-N规则。Fortran 规定,凡以字母I、J、K、L、M、N(无论大写还是 小写)6个字母开头的变量名,如无另外说明则为整型变量。以其他字母开头的变量被默认为
    Fortran分割字符串字符串替换的子程序 !============================================================= subroutine StringSplit(InStr,delimiter,StrArray,nsize) !---------------------------------------------- !---将字符串
    !===================================== !整型或实型转换生字符,借助Fortran内部文件完成, !即将一个字符串变量当作一个内部文件看待;反之依然 !=============================...
    众所周知,常见的拼接方式有:StringBuffer,StringBuilder,concat,+,StringUtils.join 那么通过如下代码,看一下在for循环中,不同的字符串拼接方式,到底哪种效率最高? package com.test.stringjoin; import org.apache.commons.lang3.StringUtils; public class T...
    在这个示例中,我们打开名为`file.txt`的文件,并使用`READ`语句和`(A100)`格式来读取每行的最多100个字符的字符串,并使用`WRITE`语句将其输出到屏幕上。 请注意,要正常读取文件,文件必须存在且可读。如果文件不存在或无法打开,则会出现运行时错误。