当前位置:  开发笔记 > 编程语言 > 正文

获得前25个字符的微小方法

如何解决《获得前25个字符的微小方法》经验,为你挑选了4个好方法。

任何人都可以想到一个更好的方法来做到以下几点:

public string ShortDescription
{
    get { return this.Description.Length <= 25 ? this.Description : this.Description.Substring(0, 25) + "..."; }
}

我本来希望只做string.Substring(0,25),但如果字符串小于提供的长度,它会引发异常.



1> Michael Stum..:

我经常需要这个,我为它写了一个扩展方法:

public static class StringExtensions
{
    public static string SafeSubstring(this string input, int startIndex, int length, string suffix)
    {
        // Todo: Check that startIndex + length does not cause an arithmetic overflow - not that this is likely, but still...
        if (input.Length >= (startIndex + length))
        {
            if (suffix == null) suffix = string.Empty;
            return input.Substring(startIndex, length) + suffix;
        }
        else
        {
            if (input.Length > startIndex)
            {
                return input.Substring(startIndex);
            }
            else
            {
                return string.Empty;
            }
        }
    }
}

如果你只需要它一次,那就是矫枉过正,但如果你经常需要它,它就会派上用场.

编辑:添加了对字符串后缀的支持.传入"...",你可以在较短的字符串上得到你的省略号,或者传入string.Empty,没有特殊的后缀.



2> Welbog..:
return this.Description.Substring(0, Math.Min(this.Description.Length, 25));

没有这个...部分.实际上,你的方式可能是最好的.



3> marcumka..:
public static Take(this string s, int i)
{
    if(s.Length <= i)
        return s
    else
        return s.Substring(0, i) + "..."
}

public string ShortDescription
{
    get { return this.Description.Take(25); }
}



4> tddmonkey..:

你做的方式对我来说似乎很好,除了我会使用幻数25,我将它作为一个常量.

你真的想把它存放在你的豆子里吗?大概这是为了显示某处,所以你的渲染器应该是截断而不是数据对象的东西

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有