我正在从C#WPF应用程序创建ICS文件,并使用以下代码生成ICS文件。
StreamWriter writer;
writer = new StreamWriter(filePath);
writer.WriteLine("BEGIN:VCALENDAR");
writer.WriteLine("VERSION:2.0");
writer.WriteLine("PRODID:MyApp");
writer.WriteLine("CALSCALE:GREGORIAN");
writer.WriteLine("METHOD:PUBLISH");
writer.WriteLine("BEGIN:VEVENT");
string startDateTime = Convert.ToDateTime(appointmentDetails.StartDate).ToString("yyyyMMdd'T'HHmmss");
string endDateTime = Convert.ToDateTime(appointmentDetails.EndDate).ToString("yyyyMMdd'T'HHmmss");
writer.WriteLine("DTSTART:" + startDateTime);
writer.WriteLine("DTEND:" + endDateTime);
writer.WriteLine(@"DESCRIPTION:" + appointmentDetails.Body);
writer.WriteLine("SUMMARY:" + appointmentDetails.Subject);
writer.WriteLine("END:VEVENT");
writer.WriteLine("END:VCALENDAR");
writer.Close();
但是我在描述时遇到了一些问题。我想当我为新行添加\ n时,会产生问题。 我需要像这样格式化我的字符串。
------------------
Header1
-----------------
bOdy1
contents
---------------
我使用以下行创建虚线。
result += new String('-', characterLength) + "\\n";
但输出显示一行而不是虚线。我认为“\ n”会产生问题。当我在新换行字符后添加一些空格时,我可以看到问题已解决。是否有更好的/替代解决方案对此?
描述中的某些字符串以不同的字体样式显示。如何使其独一无二?
如何从C#设置此ICs文件的字体?
请建议。
答案 0 :(得分:0)
首先:你应该尝试找一个iCalendar库,而不是自己写。格式非常复杂,可能还有很多你想念的小东西。
每行最多约75个字节。如果一条线不适合(因为它更大),你可以通过注入一个真正的换行符(\r\n
),后跟一个空格或制表符来拆分该行。
iCalendar阅读器只会删除所有\r\n[space]
或\r\n\t
。
但是你必须确保不要在多字节UTF-8序列中间中断文件。
描述的值必须按原样编码:
;
必须成为\;
,
必须成为\,
\n
或\N
这有帮助吗?如果没有,请发送完整的输出,如果您的iCalendar流,以便我可以告诉你你在哪里犯了错误。
答案 1 :(得分:-1)
格式说明...
str.AppendLine(String.Format("DESCRIPTION:{0}", description));
str.AppendLine(String.Format("X-ALT-DESC;FMTTYPE=text/html:{0}", description));