我需要使用visual C#將特殊html實體轉換爲其十進制值。首先,我需要加載.html文件,並且需要將所有特殊字符值替換爲十進制值。使用visual C#將html實體轉換爲十進制值#
EX:‰---> 「&#137」
®---> 「&#174」
A ---> 「&#197」
究竟什麼是優化用十進制值替換所有字符的方法。我有超過1000個字符和實體的列表。
我需要使用visual C#將特殊html實體轉換爲其十進制值。首先,我需要加載.html文件,並且需要將所有特殊字符值替換爲十進制值。使用visual C#將html實體轉換爲十進制值#
EX:‰---> 「&#137」
®---> 「&#174」
A ---> 「&#197」
究竟什麼是優化用十進制值替換所有字符的方法。我有超過1000個字符和實體的列表。
假設你可以舒適地貼合你的HTML文件中StringBuilder
,你可以採取幾個不同的方法。首先,我假設你把所有存儲在字典中你的角色替換的:
var replacements = new Dictionary<char,string> {
{ '®', "‰" },
// ...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
一次讀取一個字節的文件。
謝謝Ethan ..我認爲流媒體閱讀器是最好的 – Dakshika 2012-05-17 07:53:09
我會假設並非所有元素都是特殊字符? '