0

如何从这个字符串中剪切一部分...

"abb.c.d+de.ee+f.xxx+qaa.+.,,s,"

...我通过这个知道位置:

结果总是在“.”之间 (结果左侧)和“+”(右侧)。我知道“。”的数量。从左侧和右侧的“+”数,以分隔结果字符串。

问题在右侧,因为我需要从末尾数“+”。

说...

从左侧开始:从第 4 个“。”开始。
(这很容易),结果是=

"xxx+qaa.+.,,s,"

从右侧:结束在第二个“+”从结束!

"xxx[here]+qaa.+.,,s,"

结果是=

"xxx"

我尝试用.substring和.indexOf自己做这个,但没有成功......

有任何想法吗?谢谢

4

3 回答 3

0

您可以使用正则表达式解决此问题:

Dim r As New Regex("^(.*\.){4}(?<value>.*)(\+.*){2}$")
Dim m As Match = r.Match("abb.c.d+de.ee+f.xxx+qaa.+.,,s,")
Dim result As String = m.Result("${value}")

解释

  • ^ 表示字符串的开头
  • (.*\.){4} 这意味着任何字符 ( .) 重复任意次数 ( *) 后跟一个句点 ( \.)。句点必须用反斜杠转义,否则句点将是任何字符的通配符。.*\.附在里面是说(){4}模式必须重复四次。
  • (?<value>.*) 这指定了我们要查找的文本的占位符。 value是我们分配给它的名称。.*指定该值是任意数量的任意字符。
  • (\+.*){2} 这意味着加号字符(必须转义)后跟任意数量的任意字符,重复两次。
  • $ 表示字符串的结束
于 2012-06-15T16:31:39.650 回答
0

要查找子字符串的开头,请从左侧循环遍历字符串。数一数.你看到的 s 数量,当你达到你想要的数量时停止。将索引存储在某个变量中,例如start.

类似地找到子字符串的结尾,从右边循环并计数+

于 2012-06-15T16:17:59.663 回答
0

您可以使用该StrReverse函数来反转字符序列,然后+从左侧开始计数(使用与计数相同的方法.)。

于 2012-06-15T17:36:58.877 回答