2013-08-14 2 views
0

나는 비공개 공간이 포함 된 Html Agility Pack을 사용하여 C#에서 html 테이블을 구문 분석합니다.HtmlAgilityPack을 사용하여 구문 분석 할 때  을 무시합니다.

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

페이지에 특수 문자가 텍스트 내  을 가진 테이블을 포함하는 문자열입니다.

<td>&#160;test</td> 
<td>number =&#160;123&#160;</td> 

SelectSingleNode(".//td").InnerText을 사용하면이 특수 문자가 포함되지만이를 무시하고 싶습니다.

소스 테이블을 수정하지 않고도 이것을 무시할 수있는 우아한 방법이 있습니까? (Html ​​Agility Pack 사용 여부에 관계없이)

+1

방금'string.Replace'를 사용하여, InnerText''에 의해 반환 된 텍스트의 문자를 제거 할 수 없습니다 : 내가 좋아하는 뭔가를 제안

? –

+1

여기서 "무시"란 무엇입니까? 일반적으로 "무시 된"문자는 효과가 없을 것으로 예상되지만 두 번째 표 셀에 "숫자 = 123"이 포함되며 "="과 "123"사이에는 공백이 필요합니다. – hvd

답변

2

당신은 HtmlDecode

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

당신에게 문자열을 줄 것이다 사용할 수 있습니다

특수 문자 :

0

당신이 말하는 그 중 "특수 문자"비 깨는 공간 "공상 따옴표", em-dash 등처럼 텍스트에 완벽하게 합법적으로 나타날 수있는 유효한 문자입니다.

종종 특정 문자를 동일한 문자로 처리하려고합니다.

  • 이 동일하므로 em 대시, en 대시 및 빼기 기호/대시를 처리 할 수 ​​있습니다.
  • 또는 멋진 따옴표는 곧은 따옴표와 같습니다.
  • 또는 일반 영역으로 비 분리 영역.

그러나 이것은 민첩성 팩이 도움이 될만한 것이 아닙니다. 이를 수행하려면 string.Replace 나 자신의 정규화 함수와 같은 것을 사용해야합니다.

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; 
} 
관련 문제