首页 / .NET / 正文

[.NET]C#/.NET程序开发中如何截断一个字符串?

1651 发布于: 2018-02-20 读完约需7分钟

问题描述

如题,在.NET/C#程序开发中,我们都在不停地与字符串打交道,截断字符串也是常规的需求,那么,如何截断一个字符串,有哪些方式可以实现字符串的截断,哪种方式更优美呢?

方案一

在.NET/C#中,并没有内置关于字符串的方法供我们直接调用,我们如果需要截断字符串,必须自己实现截断的逻辑,如下就实现了一个静态扩展方法:

public static class StringExt
{
    public static string Truncate(this string value, int maxLength)
    {
        if (string.IsNullOrEmpty(value)) return value;
        return value.Length <= maxLength ? value : value.Substring(0, maxLength);
    }
}

调用方法:

var someString = "...";
someString = someString.Truncate(2);

方案二

public static class StringExt
{
    public static string Truncate( this string value, int maxLength )
    {
        if (string.IsNullOrEmpty(value)) { return value; }

        return value.Substring(0, Math.Min(value.Length, maxLength));
    }
}

方案三

public static string Truncate(this string value, int maxLength)
{
    if (!string.IsNullOrEmpty(value) && value.Length > maxLength)
    {
        return value.Substring(0, maxLength);
    }

    return value;
}

方案四

可以使用LinqJoin()方法,如:

string result = string.Join("", value.Take(maxLength)); // .NET 4

或者:

string result = new string(value.Take(maxLength).ToArray());

方案五

在.NET 4.0以及上版本,我们也可以使用Concat()方法,如下:

string.Concat(myString.Take(maxLength));

方案六

public static string Truncate(this string text, int maxLength, string suffix = "...")
{
    string str = text;
    if (maxLength > 0)
    {
        int length = maxLength - suffix.Length;
        if (length <= 0)
        {
            return str;
        }
        if ((text != null) && (text.Length > maxLength))
        {
            return (text.Substring(0, length).TrimEnd(new char[0]) + suffix);
        }
    }
    return str;
}

var myString = "hello world"
var myTruncatedString = myString.Truncate(4);

方案七

public static string Truncate(this string str, 
                              int totalLength, 
                              string truncationIndicator = "")
{
    if (string.IsNullOrEmpty(str) || str.Length < totalLength) 
        return str;

    return str.Substring(0, totalLength - truncationIndicator.Length) 
           + truncationIndicator;
}

调用方法:

"I use it like this".Truncate(5,"...")

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: [.NET].NET/C#程序开发中使用LINQ如何修改集合List<T>中的所有元素的属性值?

下一篇: [C#].NET/C#程序开发中如何更优美地实现失败任务重试的逻辑?

本文永久链接码友网 » [.NET]C#/.NET程序开发中如何截断一个字符串?

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册