2009-11-05 60 views
6

是否存在一些用於將數據前綴添加到字符串開頭的語法糖,類似於+ =如何附加到字符串?+ =用於加前綴

+2

難道你不能只調用+ =與參數顛倒?我對C#不熟悉,但是它可以在Java中工作。 – I82Much

+1

,它會將第一個字符串追加到第二個字符串中,而不是在第一個字符串的第一個字符串之前加上第二個字​​符串。結果將是相同的字符串,但在錯誤的變量 –

+0

@ l82Much:當然,你需要做一些事情:s =「Prepend」+ = s; – Lazarus

回答

20

只需使用:

x = "prefix" + x; 

有沒有複合賦值運算符做到這一點。

+0

謝謝喬恩(託尼)。我也考慮過您的意見。 –

17
sorry = "nope, " + sorry; 
0

這些是FCL中的方法,可以用來合併字符串,而不必使用任何級聯運算符。由於字符串和臨時字符串的性質,+和+ =運算符在重複調用時(即循環)容易使用大量內存。 (編輯:正如在評論中指出的那樣,String.Format往往不是一個有效的解決方案)

這是一個比糖更多的語法替代。

string full = String.Format("{0}{1}{2}", "prefix", "main string", "last string"); 

^上String.Format at MSDN更多信息。

編輯:只爲兩個字符串:上String.Concat

string result = string.Concat("prefix", "last part"); 

^更多信息。

+0

反覆使用String.Format將會產生問題。使用String.Concat比使用String.Format更有效,只是串聯字符串。循環中的連接可能使用StringBuilder更好,而不是String.Format。 –

+1

這種方式使用String.Format效率非常低。 CPU使用情況更糟糕,而且它仍然浪費RAM。你需要String.Concat來代替:string full = String.Concat(「prefix」,「main string」,「last string」)。您也可以將String.Concat傳遞給您在循環中構建的字符串[](例如,您可以構建List ,然後ToArray()它)。這會導致所有內存使用率最低,因爲它僅分配存儲結果字符串所需的空間。平均分配「+」和String.Format大約比所需的RAM多30%。這隻在處理大字符串時很重要。 –

+0

謝謝你們。很有幫助。 –

7

你總是可以寫一個擴展方法:

public static class StringExtensions{ 

    public static string Prefix(this string str, string prefix){ 
     return prefix + str; 
    } 

} 

var newString = "Bean".Prefix("Mr. "); 

這不是語法糖,但容易不過。雖然它並不比已經提出的更簡單。

7

沒有= +在C#中操作,但幸運的是OO就派上用場了這裏:

string value = "Jamie"; 
value = value.Insert(0, "Hi "); 

有關string.Insert更多的信息:http://msdn.microsoft.com/en-us/library/system.string.insert.aspx

我會同意,A = B + a似乎是這裏最明智的答案。它讀得比使用string.Insert要好得多。

+0

乾杯尼克。我決定在最後使用String.Concat方法。 –