Dưới đây là những gì tôi sử dụng. Nó rất độc đáo tạo ra dấu ba chấm ở giữa một con đường và nó cũng cho phép bạn speciy bất kỳ chiều dài hoặc dấu phân cách.
Lưu ý đây là một phương pháp mở rộng, do đó bạn có thể sử dụng nó như vậy `"c:\path\file.foo".EllipsisString()
tôi nghi ngờ bạn cần vòng lặp while, trên thực tế có thể bạn không, tôi đã quá bận rộn để kiểm tra đúng
public static string EllipsisString(this string rawString, int maxLength = 30, char delimiter = '\\')
{
maxLength -= 3; //account for delimiter spacing
if (rawString.Length <= maxLength)
{
return rawString;
}
string final = rawString;
List<string> parts;
int loops = 0;
while (loops++ < 100)
{
parts = rawString.Split(delimiter).ToList();
parts.RemoveRange(parts.Count - 1 - loops, loops);
if (parts.Count == 1)
{
return parts.Last();
}
parts.Insert(parts.Count - 1, "...");
final = string.Join(delimiter.ToString(), parts);
if (final.Length < maxLength)
{
return final;
}
}
return rawString.Split(delimiter).ToList().Last();
}
Điều này cũng được trả lời trong http://stackoverflow.com/questions/8360360/c-sharp-function-to-shrink-file-path-to-be-more-human-readble –