安全地截断C#中可能为“null”的字符串

时间:2011-11-13 14:38:59

标签: c#

我有以下方法,但如果字符串为null则失败。如果字符串为null,我怎么能只返回null?

public static string Truncate(this string value, int maxChars)
{
    return value.Length <= maxChars ?
           value :
           value.Substring(0, maxChars) + " ..";
}

有人还可以向我解释“这个”的用途。对不起,我不太擅长C#,这不是我的代码。

3 个答案:

答案 0 :(得分:10)

通过检查null并正确返回:)

public static string Truncate(this string value, int maxChars)
{
    if (value == null)
    {
        return null;
    }
    return value.Length <= maxChars ?
           value : value.Substring(0, maxChars) + " ..";
}

或者你甚至可以使用另一个条件:

public static string Truncate(this string value, int maxChars)
{
    return value == null ? null
        : value.Length <= maxChars ? value 
        : value.Substring(0, maxChars) + " ..";
}

答案 1 :(得分:1)

除了Jon Skeet的优秀服务之外,您还想了解this的用途。这使得此方法成为扩展方法。您使用您的特定功能扩展字符串类的功能。 this string value是Visual Studio在每个字符串变量的上下文菜单中向您显示此函数以及编译器为变量提供此函数的神奇之处,该方法作为其第一个参数被调用。该功能必须是静态的。

答案 2 :(得分:-9)

放一个try catch块。如果触发,则返回null。