字符串Manipultation - 两个其他字符串之间获取字符串?
我有一大段文字,其中有一些类似于此的文字:字符串Manipultation - 两个其他字符串之间获取字符串?
!#__ 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
然而,这仅删除最后一个字符串如:#__ KT __#! COMMAND。
任何帮助表示赞赏!
IndexOf返回主机字符串中模式的第一个字符的位置。你给startIndex加1,这就是为什么第一个“!”不包括在内。将“+ 1”更改为“+ 10”(模式的长度),它应该按预期工作。
startIndex指向您的第一个分隔符字符串的开始,您需要添加它的长度。
而不是增加一个,尝试添加"!#__KT__#!".Length;
或者更好的是,将该字符串保存在一个常量中,以便以后可以很容易地更改它。 – 2010-04-25 11:59:14
好了,只需添加的长度 “#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
正则表达式可以做的伎俩,看起来可读的(我最少;-):
string command = null;
Regex regex = new Regex (@"!#__KT__#!(?<command>.+)!#__KT__#!");
Match match = regex.Match(commandText);
if (match.Success)
{
command = match.Groups["command"].Value;
}
我做了类似这样的事情时,突然分离由sem分隔的电子邮件地址icolon。我已经适应我的代码在这里满足您的要求:
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_#
我希望有帮助!
谢谢!这一个角色造成了不同,非常感谢。 – Ben 2010-04-25 11:58:49