如何切割部分字符串

时间:2012-06-15 16:02:07

标签: vb.net string

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

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

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

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

问题是正确的,因为我需要从最后算起“+”。

说...

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

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

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

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

结果是=

"xxx"

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

有什么想法吗?感谢

3 个答案:

答案 0 :(得分:0)

要查找子字符串的开头,请从左侧循环字符串。计算您看到的.个数量,并在达到所需数量时停止。将索引存储在某些变量中,例如start

与查找子字符串的结尾类似,从右边循环并计算+ s。

答案 1 :(得分:0)

您可以使用Regex解决此问题:

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}这意味着加号字符(必须转义)后跟任意数量的任何字符,重复两次。
  • $表示字符串的结尾

答案 2 :(得分:0)

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