Нужна помощь в получении подстроки - PullRequest
0 голосов
/ 13 апреля 2011

У меня есть строка в формате

"<testname>$ns1$,$NS2$,$NS3$</testname>"

, и мне нужно получить строку как "$ns1$,$NS2$,$NS3$"

, может быть возможность получить строку как

"    <testname>$ns1$,$NS2$,$NS3$</testname>"

Заранее спасибо Excel Dev

Ответы [ 2 ]

0 голосов
/ 22 июля 2011
Function GetInnerTag(byval value as string) as string
   dim offset1 as integer
   dim offset2 as integer
   offset1= instr(1,value,">")
   'If the index of the first greater-than
   'is less than one, return an empty string
   if offset1 <1 then
      GetInnerTag=""
      Exit Function
   end if

   offset2=instr(offset1+1,value,"<")

   'If the index of the first less-than 
   'less than one, return ""
   if offset2 <1 then
      GetInnerTag=""
      Exit Function
   end if
   GetInnerTag=mid(value,offset1+1,(offset2-offset1-1))
End Function
0 голосов
/ 13 апреля 2011

Таким образом, чтобы переформулировать вашу проблему, вы хотите вырезать подстроку, начинающуюся после первого «>» и заканчивающуюся до первого »

Прежде чем перейти к VBA, попробуем найти формулу

cell [A1] contains text "<tag>Content</tag>"

так

   Formula                            Result      Comment
1) =FIND(">",A1,1)+1                  6           1st char of inner
2) =FIND("</",A1)-1                   12          last char of inner
3) =FIND("</",A1)-FIND(">",A1,1)-1    7           length of inner

объединяя 1 и 3, вы получаете

4) =MID(A1,FIND(">",A1,1)+1,FIND("</",A1)-FIND(">",A1;1)-1)
                                      Content     the inner

означает, что вы можете вырезать внутреннюю часть без VBA ..... но мы уверены, что можем предоставить блестящий VBA: -))

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...