好的我不知道如何解释这个问题,但请看一下:
string fornavn = borgerXML.GetElementsByTagName("Fornavne")[id].InnerXml
假设我有4个这样的字符串,它们从XML文件中获取不同的元素。 在每一个中,我想做以下事情:
.Replace("æ", "æ")
.Replace("Ã?", "Æ")
.Replace("ø", "ø")
.Replace("Ã?", "Ø")
.Replace("Ã¥", "å")
.Replace("Ã?", "Å");
如果我可以将这6行代码存储为方法或其他东西,我只需要为这4个字符串元素中的每一个都粘贴该方法,而不是粘贴4行6行代码。
有没有办法做到这一点?
提前致谢。
答案 0 :(得分:1)
这里的实际问题是该文件根据您的评论指定使用iso-8859-1编码进行编码:
<?xml version="1.0" encoding="iso-8859-1"?>
实际上与该编码不匹配,请尝试使用LINQPad:
void Main()
{
string wrong = "æ ø å";
var bytes = Encoding.GetEncoding("iso-8859-1").GetBytes(wrong);
string correct = Encoding.UTF8.GetString(bytes);
correct.Dump();
}
这将输出:
æ ø å
(请注意,我只使用了每一个字母,因为您在问题中发布的字符与它们实际编码的方式并不完全匹配。)
要解决此问题,请返回生成该文件的代码,并确保在编写文件时实际使用iso-8859-1
编码,而不是UTF-8。
答案 1 :(得分:0)
public string Convert(string source)
{
return source.Replace("æ", "æ")
.Replace("Ã?", "Æ")
.Replace("ø", "ø")
.Replace("Ã?", "Ø")
.Replace("Ã¥", "å")
.Replace("Ã?", "Å");
}
public string Convert(string source)
{
return source.Replace("æ", "æ")
.Replace("Ã?", "Æ")
.Replace("ø", "ø")
.Replace("Ã?", "Ø")
.Replace("Ã¥", "å")
.Replace("Ã?", "Å");
}
如果我理解正确的话。对于您要“处理”呼叫的每个字符串
答案 2 :(得分:0)
我从这里借了一点Regex Replace - Multiple Characters(实际上你可以用搜索功能自己找到它),使它成为一个更通用的解决方案,你可以用它或多或少的字符:
定义一个可以动态替换的函数:
string MultiReplace(string original, Dictionary<string, string> replacements)
{
//initialize result with original in case no replacements have been requested
string result = original;
foreach (var r in replacements)
{
result = result.Replace(r.Key, r.Value);
}
return result;
}
定义一个多用途变量,以节省每次需要时创建它的开销:
//You can create & initialize a dictionary variable like this:
var charmap = new Dictionary<string, string>
{
{ "æ", "æ" },
{ "Ã?", "Æ" },
{ "ø", "ø" },
{ "Ã?", "Ø" },
{ "Ã¥", "å" },
{ "Ã?", "Å" },
};
使用您的特定任务调用此函数:
var a = MultiReplace(fornavn, charmap);
通常,应该可以在XML级别上修复此问题。
BR Florian