在路径中间查找字符串

时间:2019-03-14 11:40:35

标签: excel excel-2016

我尝试在路径中间找到一个字符串。在两个反斜杠之间遇到“查找”反斜杠的问题。

以下两个公式都得到相同的数字。我相信这是因为在第二个反斜杠之后它缺少'+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()基于反斜杠来选择路径的一部分?

4 个答案:

答案 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)

您可以尝试:

  1. 在A1中导入字符串“ path1 \ path2 \ path3 \ path4 \ path5”-删除第一个“ \”
  2. 选择单元格A1
  3. 转到“数据”标签-数据工具-文本到列
  4. 选择定界-下一步
  5. 另一端导入“ \”-下一个
  6. 完成

答案 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))

并向下复制:

enter image description here

如果您对特定的零件感兴趣,请使用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))