Ignorando durante l'analisi con HtmlAgilityPack

c# html-agility-pack

Domanda

Sto analizzando la tabella html in c # usando Html Agility Pack che contiene spazio senza interruzioni.

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(page);

Dove la pagina è una stringa contenente una tabella con caratteri speciali   all'interno del testo.

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(page);

Usando SelectSingleNode(".//td").InnerText conterrà questi caratteri speciali ma voglio ignorarli.

C'è un modo elegante per ignorarlo (con o senza l'aiuto di Html Agility Pack) senza modificare la tabella di origine?

Risposta accettata

Potresti usare HtmlDecode

string foo = HttpUtility.HtmlDecode("Special char:  ");

Ti darò una stringa:

Carattere speciale:


Risposta popolare

Lo "spazio speciale" di uno spazio di rottura di cui parli è un personaggio valido che può essere perfettamente legittimamente visualizzato nel testo, proprio come "virgolette", em-dash ecc.

Spesso vogliamo trattare determinati personaggi come equivalenti.

  • Quindi potresti voler trattare un trattino, un trattino e meno segno / trattino come se fossero gli stessi.
  • Oppure le citazioni di fantasia come le virgolette semplici.
  • O il non-spazio di rottura come spazio ordinario.

Tuttavia questo non è qualcosa con cui HTML Agility Pack può essere d'aiuto. È necessario utilizzare qualcosa come string.Replace o la propria funzione di canonicalizzazione per fare questo.

Suggerirei qualcosa come:

static string CleanupStringForMyApp(string s){
    // replace characters with their equivalents
    s = s.Replace(string.FromCharCode(160), " ");
    // Add any more replacements you want to do here
    return s;
}



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché