2013-04-15 3 views
-2

Я пытаюсь сделать просто замену. Моя проблема заключается в том, что вместо замены строки, кажется, она захватывает последние пару символов и добавляет их до конца.Заменить добавление к концу строки

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)); 
     } 
    } 
} 

выход

1Chrr 
1Corr 
1Thessess 

требуемый выход

1Chr 
1Cor 
1Thess 
+0

Вывод размещен для корректного кода – mmutilva

+0

Почему вы это говорите? – user1898657

+0

Извините, я комментировал, когда вы редактировали вопрос, и я перезагрузился, поэтому я прочитал заголовок «output» и нужный вывод внизу – mmutilva

ответ

0

Используйте буквальным обозначения, например,

@"\id 1th\n fjdsbfjdshfd"; 

Будет работать, проблема заключается в том, как значение интерпретируется через конструктор строк.

+1

Похоже, он действительно хочет '' \\ id 1ch \ n fjdsbfjdshfd''. –

+0

Как определить строковый литерал из переменной с помощью метода «Добавить» для словаря? 'dict.Add (" 1 "," @ "+ string)' – user1898657

+0

Как вы не можете принять мой первый ответ, а затем задать новый вопрос для меня? ;) – Jay

Смежные вопросы