如何从这个字符串中剪切部分...
"abb.c.d+de.ee+f.xxx+qaa.+.,,s,"
......我知道这个位置:
结果总是在“。”之间。 (结果的左侧)和“+”(右侧)。 我知道“。”的数量。从左侧开始,从右侧开始“+”,以分隔结果字符串。
问题是正确的,因为我需要从最后算起“+”。
说...
从左侧开始:开始是在第4个“。” (这很容易),结果是="xxx+qaa.+.,,s,"
从右侧:结束是从结束的第二个“+”!
"xxx[here]+qaa.+.,,s,"
结果是=
"xxx"
我尝试用.substring和.indexOf自己做,但没有成功......
有什么想法吗?感谢
答案 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
函数来反转字符序列,然后从左侧计算+
(使用与计算.
相同的方法)。