.NET için HTML etiketleri temizleme metodu

Bir metnin içindeki HTML etiketlerini temizlemek için çözüm yolları ararken, çok ilginç bir çözüm ile karşılaştım. Bu ve benzeri durumlarda genellikle ilk olarak, problemi kendim nasıl çözerim diye düşünürüm. İlk aklıma gelen, düzgün yapılandırılmış bir düzenli ifade (regular expression) ile metnin içindeki tüm HTML etiketlerini temizlemek oldu. Uygulamaya geçmeden önce bir de internette araştırayım dedim ve burada probleme çok ilginç bir yönden yaklaşan bir çözüm buldum. Makalede benim aklıma da gelen düzenli ifadeler ile karşılaştırma da yapılmış ve makalede görebileceğiniz gibi bu yöntem çok daha hızlı çalışıyor. Bunun en önemli sebebi de çok yalın bir mantık kullanılmış olması.

Makalede yazılanları tekrar etmek istemiyorum. Metodun C# ve VB.NET sürümlerini aşağıya ekliyorum.

Metodun C# sürümü

public string StripTags(string input)
{
  char[] charArray = new char[input.Length];
  int arrayIndex = 0;
  bool inside = false;
  for (int i = 0; i < input.Length; i++)
  {
    char tmp = input[i];
    if (tmp == '<')
    {
      inside = true;
      continue;
    }
    if (tmp == '>')
    {
      inside = false;
      continue;
    }
    if (!inside)
    {
      charArray[arrayIndex] = tmp;
      arrayIndex++;
    }
  }
  return new string(charArray, 0, arrayIndex);
}

Metodun VB.NET sürümü

Public Function StripTags(ByVal input As String) As String
  Dim charArray As Char() = New Char(input.Length - 1) {}
  Dim arrayIndex As Integer = 0
  Dim inside As Boolean = False

  For i As Integer = 0 To input.Length - 1
    Dim tmp As Char = input(i)
    If tmp = "< "c Then
      inside = True
      Continue For
    End If
    If tmp = ">"c Then
      inside = False
      Continue For
    End If
    If Not inside Then
      charArray(arrayIndex) = tmp
      arrayIndex += 1
    End If
  Next
  Return New String(charArray, 0, arrayIndex)
End Function

“.NET için HTML etiketleri temizleme metodu” için bir yorum

Yorumlar kapalı.