我想为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个字符?


当前回答

string.Substring (0, n);// 0 -起始索引,n -字符数

其他回答

string.Substring (0, n);// 0 -起始索引,n -字符数

简单:

public static String Truncate(String input,int maxLength)
{
   if(input.Length > maxLength)
      return input.Substring(0,maxLength);
   return input;
}

部分为了总结(不包括LINQ解决方案),这里有两个一行程序,解决了int maxLength允许负值的警告和空字符串的情况:

Substring方式(来自Paul Ruane的回答):

public static string Truncate(this string s, uint maxLength) =>
    s?.Substring(0, Math.Min(s.Length, (int)maxLength));

移除方式(来自kbrimington的回答):

public static string Truncate(this string s, uint maxLength) =>
    s?.Length > maxLength ? s.Remove((int)maxLength) : s;
string truncatedToNLength = new string(s.Take(n).ToArray());  

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

substring(int startpos, int lenght);