首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Excel:字符串中的最后一个字符/字符串匹配

Excel:字符串中的最后一个字符/字符串匹配
EN

Stack Overflow用户
提问于 2013-09-04 23:02:05
回答 13查看 335.2K关注 0票数 207

是否有一种有效的方法来使用基函数来识别字符串中的最后一个字符/字符串匹配?即,不是字符串的最后一个字符/字符串,而是字符/字符串的最后一个出现位置( in a string )。Searchfind都是从左到右工作的,所以如果没有冗长的递归算法,我不知道该如何应用。而this solution现在似乎已经过时了。

EN

回答 13

Stack Overflow用户

发布于 2013-09-04 23:19:39

我想我明白你的意思了。例如,假设您想要以下字符串中最右边的\(存储在单元格A1中):

Drive:\Folder\SubFolder\Filename.ext

要获得最后一个\的位置,可以使用以下公式:

代码语言:javascript
复制
=FIND("@",SUBSTITUTE(A1,"\","@",(LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))/LEN("\")))

这告诉我们最右边的\在字符24处。它通过查找"@“并将最后一个"\”替换为"@“来做到这一点。它使用下面的方法确定最后一个

代码语言:javascript
复制
(len(string)-len(substitute(string, substring, "")))\len(substring)

在此场景中,子字符串仅为"\“,长度为1,因此您可以省略末尾的分隔符,只需使用:

代码语言:javascript
复制
=FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))

现在我们可以使用它来获取文件夹路径:

代码语言:javascript
复制
=LEFT(A1,FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\","")))))

下面是不带尾部的文件夹路径\

代码语言:javascript
复制
=LEFT(A1,FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))-1)

只获取文件名:

代码语言:javascript
复制
=MID(A1,FIND("@",SUBSTITUTE(A1,"\","@",LEN(A1)-LEN(SUBSTITUTE(A1,"\",""))))+1,LEN(A1))

但是,这里是获取特定角色的最后一个实例右侧的所有内容的另一个版本。因此,使用我们的相同示例,这也将返回文件名:

代码语言:javascript
复制
=TRIM(RIGHT(SUBSTITUTE(A1,"\",REPT(" ",LEN(A1))),LEN(A1)))
票数 360
EN

Stack Overflow用户

发布于 2016-06-02 03:13:59

创建一个自定义函数并在您的公式中使用它如何?VBA有一个内置的函数InStrRev,它可以做你想要的事情。

将其放入一个新模块中:

代码语言:javascript
复制
Function RSearch(str As String, find As String)
    RSearch = InStrRev(str, find)
End Function

您的函数将如下所示(假设原始字符串为B1格式):

代码语言:javascript
复制
=LEFT(B1,RSearch(B1,"\"))
票数 32
EN

Stack Overflow用户

发布于 2016-09-30 05:10:28

tigeravatar和Jean-François Corbett建议使用此公式来生成"\“字符最后一次出现的字符串右侧

代码语言:javascript
复制
=TRIM(RIGHT(SUBSTITUTE(A1,"\",REPT(" ",LEN(A1))),LEN(A1)))

如果用作分隔符的字符是空格“",则必须将公式更改为:

代码语言:javascript
复制
=SUBSTITUTE(RIGHT(SUBSTITUTE(A1," ",REPT("{",LEN(A1))),LEN(A1)),"{","")

无需提及,"{“字符可以替换为任何不会”正常“出现在要处理的文本中的字符。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18617349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档