我有一大段文字,里面有类似的东西:
!#__ KT __#!COMMANDHERE!#__ KT __#!
我想在VB.Net中获取字符串的'COMMANDHERE'部分,我该怎么做?到目前为止我有这个:
Dim temp As String = WebBrowser1.Document.Body.ToString
Dim startIndex As Integer = temp.IndexOf("!#__KT__#!") + 1
Dim endIndex As Integer = temp.IndexOf("!#__KT__#!", startIndex)
Dim extraction As String = temp.Substring(startIndex, endIndex - startIndex).Trim
TextBox1.Text = extraction
但是这只删除了LAST字符串,例如: #__ KT __#! COMMAND
感谢任何帮助!
答案 0 :(得分:2)
IndexOf返回主机字符串中模式的第一个字符的位置。你将startIndex加1,这就是为什么第一个“!”不包括在内。将“+ 1”更改为“+ 10”(模式的长度),它应该按预期工作。
答案 1 :(得分:1)
在分解用分号分隔的电子邮件地址时,我做了类似的事情。我已根据您的要求调整了我的代码:
Dim temp As String = WebBrowser1.Document.Body.ToString
Dim stringArray() As String = Split(temp, "!")
TextBox1.Text = stringArray(2)
在此代码中,您的文字!# KT #!COMMANDHERE!# KT #!分为以下数组:
stringArray(0) 'is equal to nothing
stringArray(1) 'is equal to #_KT_#
stringArray(2) 'is equal to COMMANDHERE
stringArray(3) 'is equal to #_KT_#
我希望有所帮助!
答案 2 :(得分:0)
startIndex指向第一个分隔符字符串的开头,需要添加其长度。
尝试添加"!#__KT__#!".Length;
答案 3 :(得分:0)
好吧,只需添加“# KT #!”的长度提取子字符串时前缀为startIndex:
Dim temp As String = WebBrowser1.Document.Body.ToString
Dim startIndex As Integer = temp.IndexOf("!#__KT__#!") + 1
Dim endIndex As Integer = temp.IndexOf("!#__KT__#!", startIndex)
Dim extraction As String = temp.Substring(startIndex + 9, endIndex - startIndex - 9).Trim
TextBox1.Text = extraction
答案 4 :(得分:0)
正则表达式可以做到这一点并且看起来可读(至少对我来说; - ):
string command = null;
Regex regex = new Regex (@"!#__KT__#!(?<command>.+)!#__KT__#!");
Match match = regex.Match(commandText);
if (match.Success)
{
command = match.Groups["command"].Value;
}
答案 5 :(得分:-2)
从字符串中间提取子字符串 这是链接