创建一个充当宏的方法

时间:2013-12-11 14:42:17

标签: c# macros

好的我不知道如何解释这个问题,但请看一下:

string fornavn = borgerXML.GetElementsByTagName("Fornavne")[id].InnerXml

假设我有4个这样的字符串,它们从XML文件中获取不同的元素。 在每一个中,我想做以下事情:

            .Replace("æ", "æ")
            .Replace("Ã?", "Æ")
            .Replace("ø", "ø")
            .Replace("Ã?", "Ø")
            .Replace("Ã¥", "å")
            .Replace("Ã?", "Å");

如果我可以将这6行代码存储为方法或其他东西,我只需要为这4个字符串元素中的每一个都粘贴该方法,而不是粘贴4行6行代码。

有没有办法做到这一点?

提前致谢。

3 个答案:

答案 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(实际上你可以用搜索功能自己找到它),使它成为一个更通用的解决方案,你可以用它或多或少的字符:

  1. 定义一个可以动态替换的函数:

    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;
    }
    
  2. 定义一个多用途变量,以节省每次需要时创建它的开销:

    //You can create & initialize a dictionary variable like this:
    var charmap = new Dictionary<string, string> 
    { 
       { "æ", "æ" }, 
       { "Ã?", "Æ" },
       { "ø", "ø" },
       { "Ã?", "Ø" },
       { "Ã¥", "å" },
       { "Ã?", "Å" },
    };
    
  3. 使用您的特定任务调用此函数:

    var a = MultiReplace(fornavn, charmap);
    
  4. 通常,应该可以在XML级别上修复此问题。

    BR Florian