开发者社区> 杰克.陈> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Excel公式 提取文件路径后缀

简介: 原文:Excel公式 提取文件路径后缀 我们在代码中获取一个文件路径的后缀,是一个很简单的事. 如C#中,可以通过new FileInfo(filePath).Extension,或者Path.GetExtension(filePath)获取。
+关注继续查看
原文:Excel公式 提取文件路径后缀

我们在代码中获取一个文件路径的后缀,是一个很简单的事.

如C#中,可以通过new FileInfo(filePath).Extension,或者Path.GetExtension(filePath)获取。

而Excel的大数据中,直接批量获取同行单元格内容中文件路径的后缀,该如何获取?

如上,想获取文件后缀,然后从中分析出文件的所属开发语言。

公式如下:

1、获取后缀

=RIGHT(D2,LEN(D2)-FIND("@",SUBSTITUTE(D2,".","@",LEN(D2)-LEN(SUBSTITUTE(D2,".",)))))

过程分析:

我们需要先找到最后的一个字符"."的位置,这样才能通过Right函数截取相应的长度,获取后缀。

而找字符,我们用Find函数就行了。但是怎么找到那唯一的一个呢?

我们通过先通过LEN(D2)-LEN(SUBSTITUTE(D2,".",)查找字符串中有多少个同样的字符"." ,然后这个数量也就可以代表最后一个字符的顺序。

最后一个字符找到了,我们可以SUBSTITUTE(D2,".","@",LEN(D2)-LEN(SUBSTITUTE(D2,".",)))将它替换成一个在这段内容中不会出现的字符@。

然后直接找字符@就行了,FIND("@",SUBSTITUTE(D2,".","@",LEN(D2)-LEN(SUBSTITUTE(D2,".",)))),找到字符@的位置,再用字符串的总长度减去位置,就能得到字符从右往左的位置。

通过Right函数截取,即可。

2、后缀得到了,再判断是何语言。一个所属开发语言的项目,包含的文件类型都是有规律的。

如C#里面,类文件是cs。数据库sql文件,后缀是sql。

而我们在Excel中只要用if就能判断出来。

=IF(ISBLANK(D2),"",IF(OR(RIGHT(D2,LEN(D2)-FIND("@",SUBSTITUTE(D2,".","@",LEN(D2)-LEN(SUBSTITUTE(D2,".",)))))="frm",RIGHT(D2,LEN(D2)-FIND("@",SUBSTITUTE(D2,".","@",LEN(D2)-LEN(SUBSTITUTE(D2,".",)))))="bas",RIGHT(D2,LEN(D2)-FIND("@",SUBSTITUTE(D2,".","@",LEN(D2)-LEN(SUBSTITUTE(D2,".",)))))="cls"),"VB",IF(RIGHT(D2,LEN(D2)-FIND("@",SUBSTITUTE(D2,".","@",LEN(D2)-LEN(SUBSTITUTE(D2,".",)))))="cs","C#",IF(OR(RIGHT(D2,LEN(D2)-FIND("@",SUBSTITUTE(D2,".","@",LEN(D2)-LEN(SUBSTITUTE(D2,".",)))))="c",RIGHT(D2,LEN(D2)-FIND("@",SUBSTITUTE(D2,".","@",LEN(D2)-LEN(SUBSTITUTE(D2,".",)))))="h"),"C++",IF(RIGHT(D2,LEN(D2)-FIND("@",SUBSTITUTE(D2,".","@",LEN(D2)-LEN(SUBSTITUTE(D2,".",)))))="sql","SP",IF(RIGHT(D2,LEN(D2)-FIND("@",SUBSTITUTE(D2,".","@",LEN(D2)-LEN(SUBSTITUTE(D2,".",)))))="4gl","4gl",IF(OR(RIGHT(D2,LEN(D2)-FIND("@",SUBSTITUTE(D2,".","@",LEN(D2)-LEN(SUBSTITUTE(D2,".",)))))="bat",RIGHT(D2,LEN(D2)-FIND("@",SUBSTITUTE(D2,".","@",LEN(D2)-LEN(SUBSTITUTE(D2,".",)))))="sh"),"BAT","UnKnown")))))))
View Code

注意一下异常情况,如单元格为空,需要加个判断IsBlank或者SUBSTITUTE(D2," ","")=""等

 

案例Demo:

language公式:

=IF(ISBLANK(E2),"",IF(OR(RIGHT(E2,LEN(E2)-FIND("@",SUBSTITUTE(E2,".","@",LEN(E2)-LEN(SUBSTITUTE(E2,".",)))))="frm",RIGHT(E2,LEN(E2)-FIND("@",SUBSTITUTE(E2,".","@",LEN(E2)-LEN(SUBSTITUTE(E2,".",)))))="bas",RIGHT(E2,LEN(E2)-FIND("@",SUBSTITUTE(E2,".","@",LEN(E2)-LEN(SUBSTITUTE(E2,".",)))))="cls"),"VB",IF(RIGHT(E2,LEN(E2)-FIND("@",SUBSTITUTE(E2,".","@",LEN(E2)-LEN(SUBSTITUTE(E2,".",)))))="cs","C#",IF(OR(RIGHT(E2,LEN(E2)-FIND("@",SUBSTITUTE(E2,".","@",LEN(E2)-LEN(SUBSTITUTE(E2,".",)))))="c",RIGHT(E2,LEN(E2)-FIND("@",SUBSTITUTE(E2,".","@",LEN(E2)-LEN(SUBSTITUTE(E2,".",)))))="h"),"C++",IF(RIGHT(E2,LEN(E2)-FIND("@",SUBSTITUTE(E2,".","@",LEN(E2)-LEN(SUBSTITUTE(E2,".",)))))="sql","SP",IF(RIGHT(E2,LEN(E2)-FIND("@",SUBSTITUTE(E2,".","@",LEN(E2)-LEN(SUBSTITUTE(E2,".",)))))="4gl","4gl",IF(OR(RIGHT(E2,LEN(E2)-FIND("@",SUBSTITUTE(E2,".","@",LEN(E2)-LEN(SUBSTITUTE(E2,".",)))))="bat",RIGHT(E2,LEN(E2)-FIND("@",SUBSTITUTE(E2,".","@",LEN(E2)-LEN(SUBSTITUTE(E2,".",)))))="sh"),"BAT","UnKnown")))))))
View Code

Project公式:

=RIGHT(LEFT(E2,FIND("@",SUBSTITUTE(E2,"\","@",LEN(E2)-LEN(SUBSTITUTE(E2,"\",))))-1),LEN(LEFT(E2,FIND("@",SUBSTITUTE(E2,"\","@",LEN(E2)-LEN(SUBSTITUTE(E2,"\",))))-1))-FIND("@",SUBSTITUTE(LEFT(E2,FIND("@",SUBSTITUTE(E2,"\","@",LEN(E2)-LEN(SUBSTITUTE(E2,"\",))))-1),"\","@",LEN(LEFT(E2,FIND("@",SUBSTITUTE(E2,"\","@",LEN(E2)-LEN(SUBSTITUTE(E2,"\",))))-1))-LEN(SUBSTITUTE(LEFT(E2,FIND("@",SUBSTITUTE(E2,"\","@",LEN(E2)-LEN(SUBSTITUTE(E2,"\",))))-1),"\",)))))
View Code

文件名公式:

=RIGHT(E2,LEN(E2)-FIND("@",SUBSTITUTE(E2,"\","@",LEN(E2)-LEN(SUBSTITUTE(E2,"\",)))))

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
RLE格式分割标注文件表示
RLE格式分割标注文件表示
0 0
thinkphp5 读取多行文本、读取文件分割多行文本
【代码】thinkphp5 读取多行文本、读取文件分割多行文本。
0 0
批量修改文件名后缀,并批量将本地图片保存到word中
批量修改文件名后缀,并批量将本地图片保存到word中
0 0
Python数据处理 | 批量提取文件夹下的csv文件,每个csv文件根据列索引提取特定几列,并将提取后的数据保存到新建的一个文件夹
会 Python 的基础文件操作、Pandas的读取数据、索引指定列的数据、保存数据就能解决(几分钟的事儿)
0 0
PHP函数运用之:利用字符串函数来提取文件的扩展名
在之前的文章《PHP函数运用之:利用数组来输出文件的扩展名》中,我们介绍了两种利用数组来获取文件扩展名的方法。这次我们继续介绍获取文件扩展名的方法,看看利用字符串函数要怎么操作,感兴趣的朋友可以学习了解一下~ 首先我们回忆一下上文,从上文我们了解到一个完整的文件格式可分为三个部分:字符“.”之前的内容、字符“.”、字符“.”之后的内容。 这次我们还是要利用 字符“.”,通过它来获取文件扩展名!下面我们会给大家介绍3种利用字符串函数获取文件扩展名的方法。
0 0
如何从BAM文件中提取fastq
虽然高通量测序分析最常用的操作是将fastq比对到参考基因组得到BAM文件,但偶尔我们也需要提取BAM文件中特定区域中fastq。最开始我认为这是一个非常简单的操作,因为samtools其实已经提供了相应的工具samtools fastq. 以biostar handbook的Ebola病毒数据为例,首先获取比对得到的BAM文件。
1618 0
Excel公式 提取文件路径后缀
我们在代码中获取一个文件路径的后缀,是一个很简单的事. 如C#中,可以通过new FileInfo(filePath).Extension,或者Path.GetExtension(filePath)获取。
653 0
C# 如何提取SaveFileDialog的保存路径
直接上代码   1 public TestOne() 2 { 3 InitializeComponent(); 4 SaveFileDialog();//调用打开SaveFileDialog 保存对话框 5 } 6 7 #region 保存对话框 ...
449 0
有关从文件完整路径中提取文件名的方法
昨天问到这个问题后,就出去维护服务器了。回来后看到大家的回答,太高兴了,现在整理一下放出来,嗯!以后有问题还要继续请教大家了。首先butimage.posedfile.filename=F:\My Documents\My Pictures\016_3QiDPkYsOPXO.
416 0
+关注
杰克.陈
一个安静的程序猿~
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载