我想为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 Truncate(String input,int maxLength)
{
   if(input.Length > maxLength)
      return input.Substring(0,maxLength);
   return input;
}

其他回答

public static string TruncateLongString(this string str, int maxLength)
{
    return str.Length <= maxLength ? str : str.Remove(maxLength);
}
substring(int startpos, int lenght);

我在我的项目中添加了这个,只是因为我使用它的地方是一个很高的机会,它被循环使用,在一个在线托管的项目中,因此我不希望任何崩溃,如果我能管理它。长度符合我的一列。这是C # 7

只有一句话:

 public static string SubStringN(this string Message, int Len = 499) => !String.IsNullOrEmpty(Message) ? (Message.Length >= Len ? Message.Substring(0, Len) : Message) : "";
string truncatedToNLength = new string(s.Take(n).ToArray());  

这个解决方案有一个小小的好处,如果n大于s。length,它仍然做正确的事情。

用c# 8

public static string TruncateLongString(this string str, int maxLength)
{
    if (string.IsNullOrEmpty(str)) return str;

    return str[.. Math.Min(str.Length, maxLength)];
}