在HTML的2个特定字符之间添加文本

时间:2014-06-02 05:07:46

标签: html vb.net string append

我正在尝试从一组HTML字符串中过滤掉特定文本,但我在编写代码时无法在Visual Basic中执行此操作。我试图解决的问题是;

< NAME = SECT1>< B个JOHN< / B个;< / A>

<名称= 1.1.10>你有一个美好的夜晚吗?< / A>< BR>

由此我只想附加以下内容;

JOHN

你有一个美好的夜晚吗?

**注意:我必须输入一些额外的空格,以防止转换为HTML。

我试图编写一些不同的子例程来在第二个">"之间附加文本。和第三"<"如果第9个字符是" S"并在第一个">"之间追加文字。和第二"<"如果第9个字符不是" S"。

这是我一直在尝试的主要想法,但我还没有找到合适的代码放入Then。

 For Each line As String In AnalyzedText
        Dim chars() = line.ToCharArray
        If chars.Length >= 9 AndAlso chars(8) = "S"c Then
            'Not sure what would go here
        ElseIf chars.Length >= 9 AndAlso chars(8) <> "S"c Then
            'Not sure what would go here
        End If
    Next

我很抱歉我无法取得更多进展,但老实说我不知道​​从哪里开始并尝试了我能想到的一切。我们将非常感谢您的任何帮助或想法。

1 个答案:

答案 0 :(得分:0)

我尝试使用您的尝试并从中创建了一个正在运行的版本。但是一旦某些内容发生变化,代码就会中断。

如果&lt; A NAME = 1.1.10&gt;是&lt; A NAME = 1.1.9&gt;代替?长度不合适。您可以使用不使用硬编码长度但使用'&gt;'的子字符串来解决这个问题。迹象。将IndexOf和LastIndexOf与子串组合使用多次。

如果标签不是两个中的一个,会发生什么?你可以抛出异常

我建议使用正则表达式来解决这类问题。看一下正则表达式。您可以使用在线正则表达式跑步者进行测试。这是一个比我提议的更清洁的解决方案

正则表达式vb教程: http://www.vb-paradise.de/index.php/Thread/34042-RegEx-Tutorial-Blutige-Anf%C3%A4nger-und-Fortgeschrittene/

转轮: http://www.myregextester.com/

这里是你的例子的代码。请注意,它会在我描述的条件下中断。如果您的问题有进一步的进展,我可以再次帮助您。我希望这能帮助你找到正确的方向。

    Dim inputList As List(Of String) = New List(Of String)()
    Dim outputList As List(Of String) = New List(Of String)()

    Dim sectAsStringLengthBefore As Integer = "< A NAME=SECT1>< B>".Length
    Dim sectAsStringLengthAfter As Integer = "< /B>< /A>".Length
    Dim sectAsStringMinimumLength As Integer = sectAsStringLengthBefore + sectAsStringLengthAfter

    Dim sectAsNumericLengthBefore As Integer = "< A NAME=1.1.10>".Length
    Dim sectAsNumericLengthAfter As Integer = "< /A>< br>".Length
    Dim sectAsNumericMinimumLength As Integer = sectAsNumericLengthBefore + sectAsNumericLengthAfter

    inputList.Add("< A NAME=SECT1>< B>JOHN< /B>< /A>")
    inputList.Add("< A NAME=1.1.10>Have you had a good night?< /A>< br>")

    For Each line As String In inputList
        If line.Length >= sectAsStringMinimumLength AndAlso line(9) = "S"c Then
            outputList.Add(line.Substring(sectAsStringLengthBefore, line.Length - sectAsStringMinimumLength))
        ElseIf line.Length >= sectAsNumericMinimumLength AndAlso line(9) <> "S"c Then
            outputList.Add(line.Substring(sectAsNumericLengthBefore, line.Length - sectAsNumericMinimumLength))
        End If
    Next