C# Replace正在添加到字符串的末尾

C# Replace正在添加到字符串的末尾,c#,replace,C#,Replace,我正在尝试做一个简单的替换。我的问题是,它没有替换字符串,而是抓取最后两个字符并将它们追加到末尾 public static Dictionary<string, string> dict = new Dictionary<string, string> { {"1", @"\\id 1ch\n fjdsbfjdshfd"}, {"2", @"\\id 1co\n fjdsbfjdshfd"}, {"3", @"\\id 1th\n fjdsbfjdshfd"} };

我正在尝试做一个简单的替换。我的问题是,它没有替换字符串,而是抓取最后两个字符并将它们追加到末尾

public static Dictionary<string, string> dict = new Dictionary<string, string> {
{"1", @"\\id 1ch\n fjdsbfjdshfd"},
{"2", @"\\id 1co\n fjdsbfjdshfd"},
{"3", @"\\id 1th\n fjdsbfjdshfd"}
};

public static string bookNameFn(string line)
{
    return line.Split(' ')[1].ToLower().Replace("1ch", "1Chr").Replace("1co", "1Cor").Replace("1th", "1Thess");
}

foreach (KeyValuePair<String, String> usfm in dict)
{
    foreach (var line in usfm.Value.Split('\n'))
    {
        if (line.StartsWith("\\id "))
        {
            Console.WriteLine(bookNameFn(line));
        }
    }
}
期望输出

1Chr
1Cor
1Thess

使用文字符号,例如

@"\id 1th\n fjdsbfjdshfd";

它会起作用,问题是通过字符串构造函数解释值的方式。

发布的输出对于代码提供程序来说似乎是正确的,当您编辑问题时,我在评论,然后我重新加载,因此我阅读了标题“输出”,并且在底部显示了所需的输出。发布的代码没有编译。我得到了“\I”的“无法识别的转义序列”。当您打印bookNameFn中split的每个值时会发生什么?您的代码段无法演示问题。看起来他实际上想要
“\\id 1ch\n fjdsbfjdshfd”
。如何使用字典的“Add”方法从变量定义字符串文字
dict.Add(“1”,“@”+string)
你怎么能不接受我的第一个答案,然后发布一个新问题让我回答?;)
@"\id 1th\n fjdsbfjdshfd";