繁体   English   中英

字符串操作-在其他两个字符串之间获取字符串?

[英]String Manipultation - Get String between two other Strings?

我有一大部分文字与此类似:

!#__ 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 __#! 命令

任何帮助表示赞赏!

IndexOf返回模式的第一个字符在主机字符串中的位置。 您将1添加到您的startIndex,这就是为什么第一个“!” 不包括在内。 将“ +1”更改为“ +10”(图案的长度),它应该可以正常工作。

拆分以分号分隔的电子邮件地址时,我已经执行了类似的操作。 我已经修改了我的代码以适合您的要求:

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_#

希望对您有所帮助!

startIndex指向第一个定界符字符串的开始,您需要添加其长度。

而不是添加一个,请尝试添加"!#__KT__#!".Length;

好吧,只需添加“# 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;
}

从字符串中间提取子字符串,这是链接

http://www.example-code.com/vb/mid.asp

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM