Mam fragmenty kodu HTML zapisane w tabeli. Nie całe strony, brak tagów lub tym podobne, tylko podstawowe formatowanie.
Chciałbym móc wyświetlić ten kod HTML jako sam tekst, bez formatowania , na danej stronie (właściwie tylko pierwsze 30-50 znaków, ale to jest łatwe).
Jak umieścić „tekst” w tym html w ciągu jako zwykły tekst?
Więc ten fragment kodu.
<b>Hello World.</b><br/><p><i>Is there anyone out there?</i><p>
Staje się:
Witaj świecie. Czy jest tam ktoś?
Odpowiedzi:
Jeśli mówisz o usuwaniu tagów, jest to stosunkowo proste, jeśli nie musisz się martwić takimi rzeczami, jak
<script>
tagi. Jeśli wszystko, co musisz zrobić, to wyświetlić tekst bez tagów, możesz to zrobić za pomocą wyrażenia regularnego:Jeśli musisz martwić się o
<script>
znaczniki i tym podobne, będziesz potrzebować czegoś mocniejszego niż wyrażenia regularne, ponieważ musisz śledzić stan, coś bardziej jak gramatyka bez kontekstu (CFG). Chociaż możesz być w stanie to osiągnąć za pomocą `` od lewej do prawej '' lub niechcianego dopasowania.Jeśli potrafisz używać wyrażeń regularnych, istnieje wiele stron internetowych zawierających dobre informacje:
Jeśli potrzebujesz bardziej złożonego zachowania CFG, sugerowałbym użycie narzędzia innej firmy, niestety nie znam dobrego, które mógłbym polecić.
źródło
Darmowy i otwarty HtmlAgilityPack ma w jednej ze swoich próbek metodę, która konwertuje z HTML do zwykłego tekstu.
Podaj mu ciąg HTML, taki jak
Otrzymasz wynik w postaci zwykłego tekstu, na przykład:
źródło
script
istyle
tagowania oraz zapisywania wewnętrznego tekstu innych elementów w ciągu wyjściowym. Wątpię, czy przeszedł wiele testów z danymi wejściowymi ze świata rzeczywistego.Nie mogłem użyć HtmlAgilityPack, więc napisałem dla siebie drugie najlepsze rozwiązanie
źródło
HTTPUtility.HTMLEncode()
ma na celu obsługę kodowania znaczników HTML jako ciągów. Zajmuje się całym ciężkim podnoszeniem za Ciebie. Z dokumentacji MSDN :HTTPUtility.HTMLEncode()
metoda, szczegółowo opisana tutaj :Stosowanie:
źródło
Aby dodać do odpowiedzi vfilby, możesz po prostu wykonać zamianę wyrażenia regularnego w swoim kodzie; nie są potrzebne żadne nowe zajęcia. Na wypadek, gdyby inni nowicjusze, tacy jak ja, natknęli się na to pytanie.
Następnie...
źródło
Trzyetapowy proces konwersji HTML na zwykły tekst
Najpierw musisz zainstalować pakiet Nuget dla HtmlAgilityPack Drugi Utwórz tę klasę
Używając powyższej klasy w odniesieniu do odpowiedzi Judy Himango
Po trzecie, musisz utworzyć obiekt powyższej klasy i użyć
ConvertHtml(HTMLContent)
metody do konwersji HTML na zwykły tekst zamiastConvertToPlainText(string html);
źródło
Ma ograniczenie polegające na tym, że nie zwija długich białych znaków w wierszu, ale jest zdecydowanie przenośny i szanuje układ jak przeglądarka internetowa.
źródło
Nie ma metody o nazwie „ConvertToPlainText” w HtmlAgilityPack, ale można przekonwertować ciąg html na ciąg CLEAR za pomocą:
To działa dla mnie. ALE NIE ZNAJDUJĘ METODY O NAZWIE „ConvertToPlainText” W „HtmlAgilityPack”.
źródło
Myślę, że najłatwiejszym sposobem jest utworzenie metody rozszerzenia `` ciągów '' (w oparciu o sugestie użytkownika Richarda):
Następnie po prostu użyj tej metody rozszerzenia na dowolnej zmiennej „łańcuchowej” w swoim programie:
Używam tej metody rozszerzenia, aby przekonwertować komentarze w formacie HTML na zwykły tekst, aby był poprawnie wyświetlany w raporcie kryształu i działa idealnie!
źródło
Najprostszy sposób, jaki znalazłem:
Klasa HtmlFilter znajduje się w Microsoft.TeamFoundation.WorkItemTracking.Controls.dll
Bibliotekę dll można znaleźć w następującym folderze:% ProgramFiles% \ Common Files \ microsoft shared \ Team Foundation Server \ 14.0 \
W VS 2015 dll wymaga również odwołania do Microsoft.TeamFoundation.WorkItemTracking.Common.dll, znajdującego się w tym samym folderze.
źródło
Jeśli masz dane zawierające znaczniki HTML i chcesz je wyświetlić, aby osoba mogła ZOBACZYĆ tagi, użyj HttpServerUtility :: HtmlEncode.
Jeśli masz dane zawierające tagi HTML i chcesz, aby użytkownik zobaczył renderowane tagi, wyświetl tekst w niezmienionej postaci. Jeśli tekst przedstawia całą stronę internetową, użyj do tego ramek IFRAME.
Jeśli masz dane zawierające znaczniki HTML i chcesz je usunąć i po prostu wyświetlić niesformatowany tekst, użyj wyrażenia regularnego.
źródło
Miałem podobny problem i znalazłem najlepsze rozwiązanie. Poniższy kod u mnie działa idealnie.
}
Znaki ucieczki, takie jak \ n i \ r, musiały zostać najpierw usunięte, ponieważ powodują, że wyrażenia regularne przestają działać zgodnie z oczekiwaniami.
Ponadto, aby ciąg wynikowy wyświetlał się poprawnie w polu tekstowym, może być konieczne podzielenie go i ustawienie właściwości Lines pola tekstowego zamiast przypisywania do właściwości Text.
this.txtResult.Lines = StripHTML (this.txtSource.Text) .Split ("\ r" .ToCharArray ());
Źródło: https://www.codeproject.com/Articles/11902/Convert-HTML-to-Plain-Text-2
źródło
Zależy od tego, co rozumiesz przez „html”. Najbardziej złożonym przypadkiem byłyby kompletne strony internetowe. Jest to również najłatwiejsze w obsłudze, ponieważ możesz użyć przeglądarki internetowej w trybie tekstowym. Zobacz artykuł Wikipedii zawierający listę przeglądarek internetowych, w tym przeglądarek w trybie tekstowym. Ryś jest prawdopodobnie najbardziej znanym, ale jeden z pozostałych może być lepszy dla twoich potrzeb.
źródło
Oto moje rozwiązanie:
Przykład:
źródło
Miałem to samo pytanie, tylko mój html miał prosty, znany układ, taki jak:
Skończyło się na tym, że użyłem prostego kodu:
Które wyjścia:
źródło
Nie napisałem, ale użyłem:
źródło
Myślę, że ma prostą odpowiedź:
źródło
Dla każdego, kto szuka dokładnego rozwiązania pytania OP dotyczącego skrótu tekstowego danego dokumentu html, bez znaków nowej linii i znaczników HTML, poniżej znajduje się rozwiązanie.
Podobnie jak w przypadku każdego proponowanego rozwiązania, z poniższym kodem są pewne założenia:
he<span>ll</span>o
powinny być wyświetlanehello
. Lista tagów wbudowanych: https://www.w3schools.com/htmL/html_blocks.aspBiorąc pod uwagę powyższe, następujące rozszerzenie ciągu ze skompilowanymi wyrażeniami regularnymi wyświetli oczekiwany zwykły tekst w odniesieniu do znaków ze znakami ucieczki HTML i wartości null na wejściu o wartości null.
źródło
public static string StripTags2 (string html) {return html.Replace ("<", "<"). Replace (">", ">"); }
W ten sposób usuwasz wszystkie „<” i „>” w ciągu. Czy to jest to, czego chcesz?
źródło