我尝试在路径中间找到一个字符串。在两个反斜杠之间遇到“查找”反斜杠的问题。
以下两个公式都得到相同的数字。我相信这是因为在第二个反斜杠之后它缺少'+1',所以第三个反斜杠在第二个反斜杠开始重新计数。
如何增加以下“反斜杠计数”以访问路径中更远的部分?
\path1\path2\path3\path4\path5
=FIND("\";A2;FIND("\";A2; FIND("\"; A2; FIND("\"; A2)+1)))
这从“ path2”开始。
=FIND("\";A2;FIND("\";A2; FIND("\"; A2; FIND("\"; A2; FIND("\";A2)+1))))
这也让我获得了“ path2”。
是否可以使用FIND()
基于反斜杠来选择路径的一部分?
答案 0 :(得分:2)
您的公式(都包含在内)
2nd \ =FIND("\",A2,FIND("\",A2)+1)
如果要转到“下一个”反斜杠,则必须+1
循环中的每个起始位置。
如果您使用的是FIND
,则使用SUBSTITUTE
用一个唯一的字符替换所需的\
,然后用FIND
替换该字符要简单得多。
但是更容易的是将字符串拆分为一个数组,然后返回适当的数组元素。
使用Excel 2016,您可以使用FILTERXML
函数来轻松执行此操作:
=INDEX(FILTERXML("<t><s>" & SUBSTITUTE(A2,"\","</s><s>") & "</s></t>","//s"),3)
请注意,因为您的字符串以\
开头,所以所需元素的索引号将是n+1
而不是n
(即3
将返回{ {1}})
对于早期的excel版本,还有其他方法可以实现。
答案 1 :(得分:0)
您可以尝试:
答案 2 :(得分:0)
用与原始字符串长度相等的一串空格替换每个反斜杠,然后选择所需的片段。
packages.json
答案 3 :(得分:0)
说 A1 包含:
垃圾\ gjgherhg \ 3876iseugf \ hviu4t \ 5432 \ happy \ sad
因此在第一个反斜杠之前之前有一些垃圾。在 A2 中输入:
=TRIM(MID(SUBSTITUTE($A$1,"\",REPT(" ",999)),ROWS($1:1)*999-998,999))
并向下复制:
如果您对特定的零件感兴趣,请使用ROWS()
的适当替代品。因此,要获取 third 元素,请使用:
=TRIM(MID(SUBSTITUTE($A$1,"\",REPT(" ",999)),3*999-998,999))
注意:
如果在第一个反斜杠前没有“垃圾”,您将得到一个空白。因此,如果您知道没有“垃圾邮件”并且想要获取 path1 ,请使用:
=TRIM(MID(SUBSTITUTE($A$1,"\",REPT(" ",999)),2*999-998,999))
等如果只需要反斜杠的位置,则可以使用SUBSTITUTE()
。要获取第二个反斜杠的位置,请使用:
=FIND(CHAR(1),SUBSTITUTE(A1,"\",CHAR(1),2))