是否有一种有效的方法可以使用基函数识别字符串中的最后一个字符/字符串匹配?即,不是字符串的最后一个字符/字符串,而是字符串中最后一次出现的位置搜索和查找都是从左到右工作的,因此如果没有冗长的递归算法,我无法思考如何应用。而这个解决方案现在似乎已经过时了
我想我明白你的意思了。例如,假设您希望在以下字符串(存储在单元格A1中)中找到最右边的\项:
驱动器:\Folder\SubFolder\Filename.ext
要获得最后一个\的位置,可以使用以下公式:
=FIND(“@”),SUBSTITUTE(A1,“\”,“@)”,(LEN(A1)-LEN(SUBSTITUTE(A1,“\”,”)/LEN(“\”)
这告诉我们最右边的\在字符24处。它通过查找“@”并用“@”替换最后一个“\”。它通过使用
(len(string)-len(替换(string,substring,”)))\len(substring)
在这种情况下,子字符串只是长度为1的“\”,因此您可以在末尾省去除法,只需使用:
=查找(@),替换(A1,“\”,“@”,LEN(A1)-LEN(替换(A1,“\”,”))
现在我们可以使用它来获取文件夹路径:
=LEFT(A1,查找(“@”),替换(A1,“\”,“@”,LEN(A1)-LEN(替换(A1,“\”,”))
这是不带尾随的文件夹路径\
=左(A1,查找(“@”),替换(A1,“\”,“@”,LEN(A1)-LEN(替换(A1,“\”,”)-1)
要仅获取文件名,请执行以下操作:
=MID(A1,查找(“@”),替换(A1,“\”,“@”,LEN(A1)-LEN(替换(A1,“\”,”))+1,LEN(A1))
但是,这里有一个替代版本,可以将所有内容都放在特定角色的最后一个实例的右侧。因此,使用相同的示例,这也将返回文件名:
=修剪(右侧(替换(A1),\,报告(“,LEN(A1))),LEN(A1)))