Вырезание HTML представляет в виде строки, не повреждая HTML-тэги

Привет я столкнулся с той же проблемой, потому что не настолько очевидно, что использовать из документов Экспо, здесь это

enter image description here

УВЕДОМЛЕНИЕ: если Вы хотите заставить его работать с автономной сборкой, необходимо настроить REVERSE_CLIENT_ID в app.json от GoogleService-info.plist

инструкция, которую можно найти здесь: point 5 https://docs.expo.io/versions/latest/sdk/google-sign-in/#setup

8
задан Tomalak 6 May 2009 в 15:54
поделиться

5 ответов

Я решил проблему, вот код на C #;

static string CutIt(string s, int limit)
{
    if (s.Length < limit) return s;

    int okIndex = 0;
    bool inClosingTag = false;
    int numOpenTags = 0;

    for (int i = 0; i < limit; i++)
    {
        if (s[i]=='<')
        {
            if (s[i+1]=='/')
            {
                inClosingTag = true;    
            }
            else
            {
                numOpenTags++;   
            }
        }
        if (s[i]=='>')
        {
            if (s[i-1]=='/')
            {
                numOpenTags--;
            }
            if (inClosingTag)
            {
                numOpenTags--;
            }
        }

        if (numOpenTags == 0) okIndex = i;

    }
    return s.Substring(0, okIndex + 1);
}
2
ответ дан 5 December 2019 в 17:40
поделиться

Это может быть излишним, но попробуйте поискать AWK , он может делать такие вещи довольно легко, поскольку он сосредоточен вокруг обработки текста.

Вы также можете написать пользовательский скрипт синтаксического анализа, например,

string s = "Visit <a href="www.htz.hr">Croatia</a> this summer."

result = ""

slice_limit = 9

i= 0

j = 0

in_tag = false

while i < slice_limit and j < s.size do

  if s[j] == "<" then in_tag = true

  if in_tag and s[i]==">" then in_tag = false

  if !in_tag then i++

  result += s[j]

end

... или что-то в этом роде (не проверял, но он дает вам идею).

РЕДАКТИРОВАТЬ : Вам также нужно будет что-то добавить, чтобы определить, закрыт тег или нет (просто добавьте флаг, например, in_tag, и смешайте его с некоторым регулярным выражением, и оно должно работать) Надеюсь, что это поможет

РЕДАКТИРОВАТЬ2 : если вы дали язык, который хотите использовать, это может быть полезно. JavaScript?

1
ответ дан 5 December 2019 в 17:40
поделиться

Когда я столкнулся с такой проблемой (для RSS-канала), я просто вызвал strip_tags перед тем, как разрезать мою строку.

0
ответ дан 5 December 2019 в 17:40
поделиться

В javascript вы можете использовать свойство textContent элементов DOM для получения этого.

HTML

<p id='mytext'>Hey <a href="#">Visit Croatia</a> today</p>

Javascript

var el = document.getElementById("mytext");
console.log( el.textContent );
//alert( el.textContent ); // if you don't have firebug.
0
ответ дан 5 December 2019 в 17:40
поделиться
static string CutIt(string s, int limit)
{
  s = s.Substring(0, limit);
  int openMark = s.LastIndexOf('<');
  if (openMark != -1)
  {
    int closeMark = s.LastIndexOf('>');
    if (openMark > closeMark)
    {
      s = s.Substring(0, openMark);
    }
  }
  return s.Trim();
}

public static void Main()
{
  Console.WriteLine(
    CutIt("Visit <a href=\"www.htz.hr\">Croatia</a> this summer.", 9)
  ); // prints "Visit"
}
1
ответ дан 5 December 2019 в 17:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: