将stringRaw从String1子串到String2

时间:2015-06-12 16:57:17

标签: vb.net visual-studio substring visual-studio-2015

如果你没有真正得到它我真正想要的让我更好地解释你:

我有一个:

<style>
  #spinner {
    opacity: 100;
    position: absolute;
  }
  body[unresolved] #spinner {
    opacity: 0;
  }
</style>
<body unresolved> 
  <img id="spinner" src=spinner.gif>
  <core-list-dart></core-list-dart>
</body>

现在我必须从stringRaw = "<img src=\"http://www.b92.net/news/pics/2015/01/15/111348233854b817af5b4bc991063053_v4 big.jpg\" title=\"\" alt=\"\" />" string1 = "<img src=\""执行某种子字符串,并且在这种情况下必须采用中间的string2 = "\" title=\"\" alt=\"\" />"

我无法使用stringFinal = "http://www.b92.net/news/pics/2015/01/15/111348233854b817af5b4bc991063053_v4 big.jpg"方法,因为我也不知道substringstring1中有多少个字符,似乎string2方法不起作用应该来自StackOverFlow上的THIS问题。

修改由于某些原因,我的split具有此值:stringRaw
无论如何,我做别人建议的事情,但我仍然收到vbCrLf & vbTab & vbTab & vbTab & "<img src=""http://www.b92.net/news/pics/2015/02/05/203819435354d39f17d74f0173575440_v4 big.jpg"" title="""" alt="""" />" & vbTab & vbTab

的错误

提前感谢您的回答。

5 个答案:

答案 0 :(得分:1)

我相信这段代码应该抓住你想要的'stringFinal'。

// Get the index of 'src="'
Int32 startIndex = stringRaw.IndexOf("src=\"");

// Get the substring starting at 'src="' and ending at the first '"' after 'src="'.
stringRaw.Substring(startIndex, stringRaw.IndexOf("\"", startIndex) - startIndex);

哦,抱歉刚注意到VB标签。这是C#所以sytnax可能略有不同,但功能和参数应该是相同的。

我忘了- startIndex我在想SubString第二个参数是索引而不是计数。尝试添加该调整。

答案 1 :(得分:1)

我遇到了追问相同角色的问题,所以我去了字符串中的文字,例如&#34; http&#34;和&#34; title =&#34;。这是在VB中:

    Dim startIndex As Int32 = stringRaw.IndexOf("http")
    Dim endIndex As Int32 = stringRaw.IndexOf("title=") - 2
    Return stringRaw.Substring(startIndex, endIndex - startIndex)

我用了#34; http&#34;并没有包括&#34;://&#34;以防你需要得到一个&#34; https&#34;在某一点。我用&#34; title =&#34;而不是&#34; title&#34;以防单词标题出现在链接中。

答案 2 :(得分:1)

您还可以使用正则表达式。类似的东西:

Dim stringRaw as String = vbCrLf & vbTab & vbTab & vbTab & "<img src=""http://www.b92.net/news/pics/2015/02/05/203819435354d39f17d74f0173575440_v4 big.jpg"" title="""" alt="""" />" & vbTab & vbTab
Dim regx as New Regex("src=\""(.*)\""\s+title")
Dim match as Match = regx.Match(stringRaw)

If match.Success
    ' Outputs http://www.b92.net/news/pics/2015/02/05/203819435354d39f17d74f0173575440_v4 big.jpg
    Console.WriteLine(match.Groups(1).Value)
End If

答案 3 :(得分:1)

Public Function ExtractSrcAttribute(ByVal element As String) As String
    Dim startToken As String = "src="""
    Dim endToken As String = """"

    Dim startIndex As Integer = element.IndexOf(startToken) + startToken.Length
    Dim endIndex As Integer = element.IndexOf(endToken, startIndex)

    If startIndex > element.Length OrElse endIndex > element.Length OrElse endIndex < startIndex Then
        'error
    End If

    Return element.SubString(startIndex, endIndex)
End Function

答案 4 :(得分:1)

正如我在评论中提到的,您可以使用Regex轻松完成此操作。这使用Positive-LookBehindPositive-LookAhead。请参阅下面的示例。这也经过了试验和测试。

  Dim rgex As New Regex("((?<=src=\\"").*)(?=\\""\s+title=)")
  Dim mtch As Match = rgex.Match(TextBox1.Text)

  If mtch.Success Then
       MessageBox.Show(mtch.Groups(1).Value)
  End If

enter image description here