2012-04-01 79 views
0

我需要使用visual C#將特殊html實體轉換爲其十進制值。首先,我需要加載.html文件,並且需要將所有特殊字符值替換爲十進制值。使用visual C#將html實體轉換爲十進制值#

EX:‰---> 「&#137」
®---> 「&#174」
A ---> 「&#197」

究竟什麼是優化用十進制值替換所有字符的方法。我有超過1000個字符和實體的列表。

+0

我會假設並非所有元素都是特殊字符? '

100‰
'是1個Html元素,3個字符,1個特殊字符? – 2012-04-01 03:21:58

回答

1

假設你可以舒適地貼合你的HTML文件中StringBuilder,你可以採取幾個不同的方法。首先,我假設你把所有存儲在字典中你的角色替換的:

var replacements = new Dictionary<char,string> { 
    { '®', "&#137" }, 
    // ...etc 
} 

首先,閱讀你的文件轉換成StringBuilder

var html = new StringBuilder(File.ReadAllText(filename)); 

第一種方法是,你可以使用StringBuilder.Replace(string,string)

foreach(var c in replacements.Keys) { 
    html.Replace(c.ToString(), replacements[c]); 
} 

第二種方法是要經過的每一個字符的文件,看看是否需要更換(請注意,我們開始backwar從文件末尾開始;如果我們去向前,我們會不斷地需要修改我們的索引值,因爲我們增加長度的文件):

for(int i=html.Length-1; i>0; i--) { 
    var c = html[i]; 
    if(replacements.ContainsKey(c)) { 
    html.Remove(i, 1); 
    html.Insert(i, replacements[c]); 
    } 
} 

很難說哪個會更有效,而不對實現中或者有細節的StringBuilder.Replace(string,string)或做一些分析,但我會留給你。

如果將整個HTML文件加載到StringBuilder是不可行的,則可以使用第二種技術的變體,StreamReader一次讀取一個字節的文件。

+0

謝謝Ethan ..我認爲流媒體閱讀器是最好的 – Dakshika 2012-05-17 07:53:09

相關問題