fortran中常常需要提取字符串中可见字符的索引,下面是个小例子:

!=============================================================
subroutine TrimIndex(InStr,LeftIndex,RightIndex,status)
!------------------------------------------------------------
!---识别InStr中左右有效可见字符(33-126)的索引
!---如果status==0,则识别正确
!---吴徐平2013-07-20(wxp07@qq.com)
!------------------------------------------------------------
Implicit None
Character(Len =*),Intent( IN ) :: InStr
Integer,Intent( INOUT)::LeftIndex,RightIndex,status
!------------------------------------------------------------
Integer ::i
!------------------------------------------------------------
LeftIndex=0
do i=1,LEN(InStr),1
if ((IACHAR(InStr(i:i)) >32 ).AND.(IACHAR(InStr(i:i)) <127) ) then
LeftIndex=i !-左边有效可见字符(33-126)的索引
EXIT
end if
end do
!------------------------------------------------------------
RightIndex=LEN(InStr)+1
do i=LEN(InStr),1,-1
if ((IACHAR(InStr(i:i)) >32 ).AND.(IACHAR(InStr(i:i)) <127 )) then
RightIndex=i !-右边有效可见字符(33-126)的索引
EXIT
end if
end do
!--------------------------
if ((LeftIndex>0 ).AND. (LeftIndex<=RightIndex) .AND. (RightIndex<=LEN(InStr)))then
status=0 !-操作正确
else
status=-1 !-操作有误
end if
!--------------------------
end subroutine TrimIndex

下面是测试程序:

program TestTrimIndex
!-----------------------------------------
!测试TrimIndex的程序
!吴徐平 2013-07-20
!wxp07@qq.com
!编译:gfortran TestTrimIndex.f90
!-----------------------------------------
implicit none
integer :: count !-命令行参数的个数
CHARACTER(len=24) :: InStr !命令行参数
Integer::LeftIndex,RightIndex,status,i
!-----------------------------------------
count = command_argument_count() !获取主程序命令行的输入参数的个数
!------------------------------------
if (count>0) then
do i=1,count
CALL get_command_argument(i, InStr)
call TrimIndex(InStr,LeftIndex,RightIndex,status)
if (status==0)then
write(*,*)'<'//InStr//'>'
write(*,*)'<'//InStr(LeftIndex:RightIndex)//'>'
write(*,*)LeftIndex
write(*,*)RightIndex
end if
end do
else
write(*,*) 'You should input an argument!'
end if
!------------------------------------
end program

上面的子程序常用来查找字符串中第一个和最后一个不是空格字符的索引.

有图有真相,如下:

fortran中提取字符串中可见字符的索引的更多相关文章

  1. python 提取字符串中的指定字符 正则表达式

    例1: 字符串: '湖南省长沙市岳麓区麓山南路麓山门' 提取:湖南,长沙 在不用正则表达式的情况下: address = '湖南省长沙市岳麓区麓山南路麓山门' address1 = address.s ...

  2. JS中substring()方法(用于提取字符串中介于两个指定下标之间的字符)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. JS对象 substring() 方法用于提取字符串中介于两个指定下标之间的字符。

    提取字符串substring() substring() 方法用于提取字符串中介于两个指定下标之间的字符. 语法: stringObject.substring(starPos,stopPos)  参 ...

  4. substring() 方法用于提取字符串中介于两个指定下标之间的字符。

    substring() 方法用于提取字符串中介于两个指定下标之间的字符. 语法 stringObject.substring(start,stop) 参数 描述 start 必需.一个非负的整数,规定 ...

  5. C++ 提取字符串中的数字

    C++ 提取字符串中的数字 #include <iostream> using namespace std; int main() { ] = "1ab2cd3ef45g&quo ...

  6. 使用awk提取字符串中的数字或字母

    1.提取字符串中的数字 $ echo 'dsFUs34tg*fs5a%8ar%$#@' |awk -F "" ' { for(i=1;i<=NF;i++) { if ($i ...

  7. 在SQL中取出字符串中数字部分或在SQL中取出字符部分

    在SQL中取出字符串中数字部分或在SQL中取出字符部分 编写人:CC阿爸 2013-10-18 近来在开发一个项目时,一包含数字的字符串,需要取出中间的数字部分进行排序.经过baidu搜索.并结合自己 ...

  8. PHP提取字符串中的手机号正则表达式怎么写

    0. 简介 PHP通过正则表达式提取字符串中的手机号并判断运营商,简单快速方便,能提取多个手机号. 1. 代码 <?php header("content-type:text/plai ...

  9. C#中查询字符串中是否包含指定字符/串,使用IndexOf还是Contains?

    C#中查询字符串中是否包含指定字符/串,使用IndexOf还是Contains?这是一个很常见的命题,以前也没有注意,今天QQ群里有人提起,于是就做了下试验,代码如下: using System; u ...

随机推荐

  1. SpringMVC(七) RequestMapping 路径中带占位符的URL

    使用方法:在@RequestMapping("/delete/{id}")中,通过{id}带入pathvariable,然后在方法中,通过@PathVariable("变 ...

  2. 21.python中的闭包和装饰器

    python中的闭包从表现形式上定义(解释)为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure). 以下说明主要针对 python ...

  3. gson 生成json有\u003d异常字符处理

    只需将Gson的初始化修改为 Gson gson = new GsonBuilder().disableHtmlEscaping().create(); 连接 http://blog.csdn.net ...

  4. bzoj4456: [Zjoi2016]旅行者

    题目链接 bzoj4456: [Zjoi2016]旅行者 题解 网格图,对于图分治,每次从中间切垂直于长的那一边, 对于切边上的点做最短路,合并在图两边的答案. 有点卡常 代码 #include< ...

  5. 【dfs】BZOJ1703-[Usaco2007 Mar]Ranking the Cows 奶牛排名

    [题目大意] 农夫约翰有N(1≤N≤1000)头奶牛,每一头奶牛都有一个确定的独一无二的正整数产奶率.约翰想要让这些奶牛按产奶率从高到低排序,约翰已经比较了M(1≤M≤10000)对奶牛的产奶率,但他 ...

  6. win8预装系统环境下安装win7问题以及双操作系统安装解决

    装了许多次机器,各种操作系统,这次在win8的系统上却遇到了一些问题,现总结如下. 实验室老师给了台新DELL机器,原装的是win8操作系统,很不方便,也不想把这个系统做掉,所以就想再装个win7,即 ...

  7. 整理c# 不常用但有用代码

    # 整理c# 不常用但有用代码 1.winform窗体右键菜单打开其他窗体 private void contextMenuStripHandler_Click(object sender, Even ...

  8. xcode 拷贝新的ios image 进去以后 出现 the divices is locked

    苹果公司时不时的给你更新下ios系统.对于开发者来说.更新xcode是灾难性的. 一直在用xcode7.3.1,可是最新不小心把手机升级到 ios 10.1.1,这下好了,真机调试不行了.提示没有镜像 ...

  9. memcached对key和value的限制 memcached的key最大长度和Value最大长度

    memcached的简单限制就是键(key)和item的限制.最大键长为250个字符.可以接受的储存数据不能超过1MB,因为这是典型slab 的最大值.这里我们可以突破对key长度的限制.问题解决:修 ...

  10. wap2.0开发

    前言 移动通信和互联网的迅速发展,使得互联网从固定向移动转移(即移动互联网)成为一种必然的趋势.由于手机终端本身的限制条件和无线链路的特点,现有无线传送技术的效率和可靠性会越来越难以令用户满意.如何让 ...