Newline char在交换约会

时间:2010-11-08 13:41:57

标签: c# .net exchange-server

我需要在地址上预约。地址由几个变量构成。当然我还需要一些换行。但是当我在outlook中打开约会时,“\ n”不会产生新行。

好的,这里是代码片段:

    string address = name + "\n" + strasse + "\n" + plz.ToString() + " " + ort;
        if ( telefon != "") {
            address = address + "\nTelefon:: " + telefon;
        }
        if ( natel != "") {
            address = address + "\nNatel: " + natel;
        }
        if ( mail != "") {
            address = address + "\nE-Mail: " +mail;
        }

没什么特别的。问题是当我把这个写到约会的主体时,没有任何实际的换行符。

5 个答案:

答案 0 :(得分:5)

如果没有看到至少一个你传递的字符串的例子,很难诊断它,但我倾向于在我的C#代码中做的一件事就是使用常量:

Environment.NewLine

或者我使用StringBuilder类和AppendLine()调用来添加换行符。

编辑:根据你的代码片段,我会用这种方式编写它(它也会更高效)。使用您的代码段,正在分配许多字符串(因为字符串是不可变的)。在这种情况下,推荐的方法是使用StringBuilder。

StringBuilder address = new StringBuilder();
address.AppendLine(name);
address.AppendLine(strasse);
address.Append(plz.ToString()); // This may not be neccessary depending on the type of plz, StringBuilder has overloads that will convert base types to string for you
address.Append(" ");
address.Append(ort);
if (!string.IsNullOrEmpty(telefon))
{
     address.AppendLine();
     address.Append("Telefon:: ");
     address.Append(telefon);
}
if (!string.IsNullOfEmpty(natel))
{
     address.AppendLine();
     address.Append("Natel: ");
     address.Append(natel);
}
if (!string.IsNullOrEmpty(mail))
{
     address.AppendLine();
     address.Append("E-Mail: ");
     address.Append(mail);
}

return address.ToString();

注意:如果您使用的是.Net 4.0,则可以使用string.IsNullOrWhitespace而不是IsNullOrEmpty来检查不仅仅是一个空字符串,而是一个只包含空格的字符串。

编辑2 - 根据您的需要答案< br />标签而不是换行符。

const string newLine = " <br /> ";
StringBuilder address = new StringBuilder();
address.Append(name);
address.Append(newLine);
address.Append(strasse);
address.Append(newLine);
address.Append(plz.ToString()); // This may not be neccessary depending on the type of plz, StringBuilder has overloads that will convert base types to string for you
address.Append(" ");
address.Append(ort);
if (!string.IsNullOrEmpty(telefon))
{
     address.Append(newLine);
     address.Append("Telefon:: ");
     address.Append(telefon);
}
if (!string.IsNullOfEmpty(natel))
{
     address.Append(newLine);
     address.Append("Natel: ");
     address.Append(natel);
}
if (!string.IsNullOrEmpty(mail))
{
     address.Append(newLine);
     address.Append("E-Mail: ");
     address.Append(mail);
}

return address.ToString();

答案 1 :(得分:1)

好的,我现在明白了。我发现约会以html格式存储。 所以我试图使用html实体\ r \ n,。那不起作用。我终于通过使用br标签解决了这个问题

答案 2 :(得分:0)

你应该尝试“\ r \ n”

答案 3 :(得分:0)

答案 4 :(得分:0)

虽然你对使用&lt; br /&gt;完全正确,但换行并不是Exchange在笔记/约会机构中唯一吃的东西。

我最终得到了以下代码:

Regex NewlineRegex = new Regex("(\r\n)|(\r)|(\n)");

string valueToWrite = NewlineRegex.Replace(
  SecurityElement.Escape(fieldValue), "<br/>")
.Replace(" ", "&nbsp;")
.Replace("&apos;", "'"); // &apos; is not in HTML.

即使在那之后你会在身体/音符的末尾回读额外的"\r\n",所以我必须在阅读后.TrimEnd()