2013-12-07 54 views

回答

3

鑑於所需的文本字符串和文本框的最大字符長度,使用這個擴展的方法來解決這個問題:

public static string TruncateAtWord(this string input, int length) 
{ 
    if (input == null || input.Length < length) 
     return input; 

    int iNextSpace = input.LastIndexOf(" ", length); 

    return string.Format("{0}...", input.Substring(0, (iNextSpace > 0) ? iNextSpace : length).Trim()); 
} 

用法:

var ellipsisedString = "this is a very long string and I want to cut it with ellipsis!".TruncateAtWord(25); 

結果:

「這是一個很長的...」

+0

這個答案並不是真的正確,因爲它在用戶界面調整時失敗(即字體被調整) 。解決此問題的唯一真正方法是在用戶界面(即'TextTrimming'):http://msdn.microsoft.com/en-us/library/windowsphone/develop/system.windows.controls.textblock.texttrimming (v = vs.105).aspx –

0

當我需要一些簡單的文本記錄時,我使用下面的代碼來截斷字符串。可能是一個靈感。

public static string Truncate(this string yourString, int maxLength) 
{ 
    return yourString.Substring(0, Math.Min(maxLength, yourString.Length)); 
} 

回顧Yair Nevet的回答我發現他的問題更完整。您可以使用上面的代碼類似於他的回答:

string yourString = "Your long text goes here".Truncate(10); 
5

作爲替代其他兩個方案,你可以在XAML中使用的TextTrimming =「WordEllipsis」,它只是取決於你是否要限制字符串到一定數量的字符或根據文本框大小進行修剪。

+0

這不僅僅是一個「替代」答案,而且應該如何實現。 –

相關問題