我想为String类编写一个扩展方法,以便如果输入字符串比提供的长度N长,则只显示前N个字符。
这是它的样子:
public static string TruncateLongString(this string str, int maxLength)
{
if (str.Length <= maxLength)
return str;
else
//return the first maxLength characters
}
什么字符串.*()方法我可以使用只得到str的前N个字符?
public static string TruncateLongString(this string str, int maxLength)
{
if (string.IsNullOrEmpty(str)) return str;
return str.Substring(0, Math.Min(str.Length, maxLength));
}
在c# 8或更高版本中,也可以使用Range使其更简洁:
public static string TruncateLongString(this string str, int maxLength)
{
return str?[0..Math.Min(str.Length, maxLength)];
}
可以使用表达式体进一步简化:
public static string TruncateLongString(this string str, int maxLength) =>
str?[0..Math.Min(str.Length, maxLength)];
注意空条件操作符(?)用于处理str为空的情况。这取代了显式空检查的需要。