MSDN.WhiteKnight - Stack Overflow answers
Ответ на "C# и запись в .rtf-шаблон"
Answer 932127
Если вас не интересует поддержка старого ПО, можно закодировать в Unicode, тогда проблемы кодировки не будет. Для этого пропустите строку через такой метод:
static string RtfEncode(string input) { StringBuilder sb = new StringBuilder(input.Length * 4); foreach (var c in input) { if (c > 127) //заменяем не-ASCII символы на их Unicode представление { string escape = "\\u" + ((Int16)c).ToString() + "?"; sb.Append(escape); } else //ASCII добавляем без изменений { sb.Append(c); } } return sb.ToString(); }
Тогда замену можно произвести как-то так:
string template = "#template#"; string word = "Иванов И.А."; string contents = File.ReadAllText(input_file); word = RtfEncode(word); contents = contents.Replace(template, word); File.WriteAllText(output_file, contents);
О кодировке не нужно заботиться, так как после RtfEncode задействованы только ASCII символы. При таком способе ничего не должно нарушиться, при условии что маркер замены в шаблоне никак не пересекает границы управляющих конструкций RTF. (Отредактируйте шаблон в блокноте, и убедитесь, что строка замены представлена именно так, как вы ожидаете.)
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.