首页 文章

String类中的哪个方法只返回前N个字符?

提问于
浏览
153

我想为 String 类编写一个扩展方法,这样如果输入字符串to比提供的长度 N 长,则只显示第一个 N 字符 .

这是它的样子:

public static string TruncateLongString(this string str, int maxLength)
{
    if (str.Length <= maxLength)
        return str;
    else
        //return the first maxLength characters                
}

我可以使用什么 String.*() 方法来获取 str 的第一个 N 字符?

10 回答

  • 6

    只是:

    public static String Truncate(String input,int maxLength)
    {
       if(input.Length > maxLength)
          return input.Substring(0,maxLength);
       return input;
    }
    
  • 4
    public static string TruncateLongString(this string str, int maxLength)
    {
        return str.Length <= maxLength ? str : str.Remove(maxLength);
    }
    
  • -4

    如果我们正在谈论验证也是为什么我们没有检查空字符串条目 . 任何具体原因?

    我认为以下方式有帮助,因为IsNullOrEmpty是一个系统定义的方法,三元运算符的圈复杂度= 1而if(){} else {}的值为2 .

    public static string Truncate(string input, int truncLength)
        {
            return (!String.IsNullOrEmpty(input) && input.Length >= truncLength)
                       ? input.Substring(0, truncLength)
                       : input;
        }
    
  • 29
    public static string TruncateLongString(this string str, int maxLength)
    {
        if (string.IsNullOrEmpty(str))
            return str;
        return str.Substring(0, Math.Min(str.Length, maxLength));
    }
    
  • 322
    string truncatedToNLength = new string(s.Take(n).ToArray());
    

    这个解决方案有一个小小的好处,如果n大于s.Length,它仍然是正确的 .

  • 1

    您可以使用LINQ str.Take(n)str.SubString(0, n) ,后者将为 n > str.Length 抛出 ArgumentOutOfRangeException 异常 .

    请注意,LINQ版本返回 IEnumerable<char> ,因此您必须将 IEnumerable<char> 转换为 stringnew string(s.Take(n).ToArray()) .

  • 52

    每当我必须在C#中进行字符串操作时,我都会错过Visual Basic中的旧的 LeftRight 函数,这些函数比 Substring 更容易使用 .

    所以在我的大多数C#项目中,我为它们创建了扩展方法:

    public static class StringExtensions
    {
        public static string Left(this string str, int length)
        {
            return str.Substring(0, Math.Min(length, str.Length));
        }
    
        public static string Right(this string str, int length)
        {
            return str.Substring(str.Length - Math.Min(length, str.Length));
        }
    }
    

    注意:
    Math.Min 部分存在,因为 Substring 在输入字符串的长度小于请求的长度时抛出 ArgumentOutOfRangeException ,如前面答案中的一些注释中已经提到的那样 .

    用法:

    string longString = "Long String";
    
    // returns "Long";
    string left1 = longString.Left(4);
    
    // returns "Long String";
    string left2 = longString.Left(100);
    
  • 0

    我在我的项目中添加了这个,因为在我使用它的时候很有可能在循环中使用它,在一个在线托管的项目中因此我不想要任何崩溃,如果我可以管理它 . 长度适合我的专栏 . 这是C#7

    只需一行:

    public static string SubStringN(this string Message, int Len = 499) => !String.IsNullOrEmpty(Message) ? (Message.Length >= Len ? Message.Substring(0, Len) : Message) : "";
    
  • 5
    substring(int startpos, int lenght);
    
  • 8

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

相关问题