2010-11-08 57 views
1

我需要將一個地址放入約會中。地址由多個變量構成。當然,我也需要一些換行符。但是,當我在Outlook中打開約會時,「\ n」不會導致新行。交換約會中的換行符char

確定這裏是代碼片段:

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

沒什麼特別的。問題在於,當我將它寫入約會的正文時,則沒有任何實際的換行符。

+0

代碼片段在這裏會有很大的幫助。 – 2010-11-08 14:27:47

回答

4

它非常難以診斷此沒有看到至少要傳遞的字符串的例子,但有一兩件事,我傾向於在我的C#代碼要做的就是使用常量:

Environment.NewLine 

還是我使用帶有AppendLine()調用的StringBuilder類來添加換行符。

編輯:根據你的代碼片段,我會這樣寫它(它也會更高效)。用你的代碼片斷,大量的字符串被分配(因爲字符串是不可變的)。在這種情況下推薦的方法是使用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(); 
0

你應該嘗試爲 「\ r \ n」 個

1

好吧,我知道了現在。我發現約會是以html格式存儲的。 因此,我試圖使用HTML實體\ r \ n,。這是行不通的。我終於通過使用BR標籤解決了這個問題

+0

在這種情況下,您可以修改我發佈的代碼,而不是調用address.AppendLine(),您可以調用address.Append(「
」)。你應該使用StringBuilder類,它是專門爲你正在做的。它比使用'+'運算符連接所有這些字符串的性能要好得多。 – pstrjds 2010-11-09 13:29:46

+0

我編輯了我的答案,顯示瞭如何在StringBuilder中放置「
」的代碼 – pstrjds 2010-11-09 13:44:04

0

當你有關使用<完全正確的BR />,換行符是不是唯一的東西交易所筆記/約會身體吃。

我結束了下面的代碼:

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()他們。