当前位置:  开发笔记 > 开发工具 > 正文

如何获取字符串的内容减去ColdFusion中的扩展名?

如何解决《如何获取字符串的内容减去ColdFusion中的扩展名?》经验,为你挑选了2个好方法。

例如,我只想要一个字段中文件的"文件名".说我有myimage.jpg我只想显示"myimage"我怎么得到那个?



1> Tomalak..:

使用List功能对您有利.


请注意,这仅适用于实际具有文件扩展名的文件名(定义为最后一个点之后的文件扩展名).为了使它更安全,以下是更好的:



  
  

  
  

更复杂的事情:可能有一些以点开头的文件.可能存在包含许多相邻点的文件名.列表函数为它们返回错误的结果,因为它们忽略空列表元素.也可能有文件有点,但没有扩展名.只有在您提供扩展名白名单时才能处理这些内容:ListFindNoCase(FileExt, "doc,xls,ppt,jpg").如果您想要考虑所有这些,您可能需要辞职到一个reguar表达式:



要从路径中分割文件名,ColdFusion提供了不同的功能,这些功能也可以处理平台差异:GetFileFromPath()GetDirectoryFromPath()



2> ale..:

Tomalak的答案很好,但这可能会变得棘手.给定一个名为"mydoc.ver1.doc"(有效的Windows文件名)的文件,它是文件名,是扩展名?如果有文件路径怎么办?

但是,即使在这些情况下,您仍然可以利用列表函数.

您可以轻松地从路径中解析出文件

fullFileName=listLast(fieldname,"\/")

如果你假设文件名是点之前的所有内容,那么

theFileName=listFirst(fullFileName,".") 

将工作.

如果你想确保你得到的东西除了最后一段时间后的东西,那么需要一点点诡计,但并不多.没有一个listAllButLast()功能(尽管CFLIB.org上可能存在这样的事情),但我有两种方法可以想到你想要的东西.

fileName=reverse(listRest(reverse(fullFileName),"."))

要么

fileName=listDeleteAt(fullFileName,listLen(fullFileName,"."),".")

然而,与Tomalak的建议一样,这将打破缺少扩展名的文件名.将其包含在遗嘱中就可以解释这一点.

推荐阅读
ar_wen2402851455
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有