有沒有內置在System.Linq的做到這一點的方法,但你可以很容易編寫自己的擴展方法:
public static class StringExtensions
{
public static string ToSystemString(this IEnumerable<char> source)
{
return new string(source.ToArray());
}
}
不幸的是,因爲存在於所有.NET對象object.ToString
,你就必須給該方法一個不同的名稱,以便編譯器將調用你的擴展方法,而不是內置的ToString
。
根據以下您的評論,最好質疑這是否是正確的做法。由於String
暴露了很多的功能,通過它的公共方法,我會實現這個方法的擴展上String
本身:
string SomeText = "this is some text in a string";
return SomeText.Truncate(6);
這樣做的好處是:
/// <summary>
/// Truncates a string to a maximum length.
/// </summary>
/// <param name="value">The string to truncate.</param>
/// <param name="length">The maximum length of the returned string.</param>
/// <returns>The input string, truncated to <paramref name="length"/> characters.</returns>
public static string Truncate(this string value, int length)
{
if (value == null)
throw new ArgumentNullException("value");
return value.Length <= length ? value : value.Substring(0, length);
}
你會像下面這樣使用它當字符串已經小於所需長度時,不會創建任何臨時數組/對象。
謝謝。這是一個「好」的方式來做事情?它是一個大型系統的一部分,我在這裏傳遞一個StringBuilder和'.Append()'來生成一個文件。我知道我不應該過早地進行優化,但是如果有一種更簡單的方法來做到這一點,那麼您正在使用LINQ來建議浪費大量的CPU /內存。簡單來說:你會使用這段代碼在你自己的項目中修改一個字符串到一定的長度嗎? – rtpHarry 2011-05-21 18:54:54
@rtpHarry好問題;我個人不會使用LINQ來完成這個任務,並用我選擇的方法更新了我的答案。 – 2011-05-21 19:18:30
感謝您的額外反饋,我將根據此更新我的代碼:) – rtpHarry 2011-05-21 19:52:06