How to convert a string to RTF in C#?

前端 未结 7 1656
小鲜肉
小鲜肉 2020-11-29 09:16

Question

How do I convert the string \"Européen\" to the RTF-formatted string \"Europ\\\'e9en\"?

[TestMethod]
public void Convert_A_         


        
7条回答
  •  小蘑菇
    小蘑菇 (楼主)
    2020-11-29 10:10

    Here's improved @Vladislav Zalesak's answer:

    public static string ConvertToRtf(string text)
    {
        // using default template from wiki
        StringBuilder sb = new StringBuilder(@"{\rtf1\ansi\ansicpg1250\deff0{\fonttbl\f0\fswiss Helvetica;}\f0\pard ");
        foreach (char character in text)
        {
            if (character <= 0x7f)
            {
                // escaping rtf characters
                switch (character)
                {
                    case '\\':
                    case '{':
                    case '}':
                        sb.Append('\\');
                        break;
                    case '\r':
                        sb.Append("\\par");
                        break;
                }
    
                sb.Append(character);
            }
            // converting special characters
            else
            {
                sb.Append("\\u" + Convert.ToUInt32(character) + "?");
            }
        }
        sb.Append("}");
        return sb.ToString();
    }
    

提交回复
热议问题