【问题标题】:String Manipultation - Get String between two other Strings?字符串操作 - 在其他两个字符串之间获取字符串?
【发布时间】:2010-04-25 11:53:49
【问题描述】:

我有一大段文字与此类似:

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

感谢任何帮助!

【问题讨论】:

    标签: .net vb.net string


    【解决方案1】:

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

    【讨论】:

    • 谢谢!那个角色带来了不同,非常感谢。
    【解决方案2】:

    在拆分用分号分隔的电子邮件地址时,我做了类似的事情。我已经调整了我的代码以满足您的要求:

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

    希望对你有帮助!

    【讨论】:

      【解决方案3】:

      startIndex 指向您的第一个分隔符字符串的开头,您需要添加它的长度。

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

      【讨论】:

      • 或者更好的是,将该字符串保存在一个常量中,这样您以后可以很容易地更改它。
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        正则表达式可以做到这一点并且看起来可读(至少对我来说;-):

        string command = null;
        Regex regex = new Regex (@"!#__KT__#!(?<command>.+)!#__KT__#!");
        Match match = regex.Match(commandText);
        if (match.Success)
        {
            command = match.Groups["command"].Value;
        }
        

        【讨论】:

          【解决方案6】:

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

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

          【讨论】:

          • 不鼓励链接,除非您引用相关内容。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-28
          相关资源
          最近更新 更多