检查字符串是否为空或空,否则修剪它

时间:2012-11-09 11:09:12

标签: c# null string

我尝试了以下内容:

dummy.Title = ds1Question.Title.null ? "Dummy title" : ds1Question.Title.Trim();

我期待看到像nullorempty这样的智能感知,但似乎没有任何东西可以做到这一点。还有其他方法可以做到这一点吗?

8 个答案:

答案 0 :(得分:25)

这是无效的:

 ds1Question.Title.null

你可以:

dummy.Title = ds1Question.Title == null ? "Dummy title"
                                        : ds1Question.Title.Trim();

或使用:

dummy.Title = (ds1Question.Title ?? "Dummy title").Trim();

这会对默认值执行不必要的修剪,但这很简单。

这些只会检查无效。要检查是否为空,您需要调用String.IsNullOrEmpty,我会通过一个额外的变量来实现理智:

string title = ds1Question.Title;
dummy.Title = string.IsNullOrEmpty(title) ? "Dummy title" : title.Trim();

或者根据Marc的回答使用IsNullOrWhitespace,以避免标题为“”,而不是空,直到它被修剪

答案 1 :(得分:12)

你可以更进一步了解Justin Harvey suggested并实现一个扩展方法(当然是在静态类中):

public static string TrimmedOrDefault(this string str, string def)
{
    if (string.IsNullOrEmpty(str)) //or if (string.IsNullOrWhiteSpace(str))
    {
        // Hmm... what if def is null or empty?
        // Well, I guess that's what the caller wants.
        return def; 
    }
    else
    {
        return str.Trim();
    }
}

然后你可以像这样使用它:

dummy.Title = ds1Question.Title.TrimmedOrDefault("Dummy title");

答案 2 :(得分:11)

也许:

dummy.Title = string.IsNullOrEmpty(ds1Question.Title)
             ? "Dummy title" : ds1Question.Title.Trim();

dummy.Title = string.IsNullOrWhiteSpace(ds1Question.Title)
             ? "Dummy title" : ds1Question.Title.Trim();

答案 3 :(得分:2)

dummy.Title = string.IsNullOrEmpty(ds1Question.Title) ? 
                         "Dummy title" : ds1Question.Title.Trim();

答案 4 :(得分:2)

以下是我使用的一些字符串扩展。我加了一个来做一个安全的装饰。希望有人会发现这些有用。

    /// <summary>
    /// Extensions for String
    /// </summary>
    public static class StringExtenions
    {
        public static string SafeTrim(this string input)
        {
            if (input.IsNotEmpty())
            {
                return input.Trim();
            }

            return input;
        }

        /// <summary>
        /// Checks to see if a given string is empty.
        /// </summary>        
        public static bool IsEmpty(this string input)
        {
            return string.IsNullOrEmpty(input);
        }

        /// <summary>
        /// Checks to see if a given string is not empty.
        /// </summary>        
        public static bool IsNotEmpty(this string input)
        {
            return !string.IsNullOrEmpty(input);
        }

        /// <summary>
        /// Converts text to title case.
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public static string ToTitleCase(this string input)
        {
            CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;            
            TextInfo textInfo = cultureInfo.TextInfo;

            return textInfo.ToTitleCase(input.ToLower());
        }
    }

答案 5 :(得分:1)

你必须通过字符串静态方法

来调用它
dummy.Title = string.IsNullOrEmpty(ds1Question.Title) ? "Dummy title" : ds1Question.Title.Trim();

如果你想能够直接在字符串实例上调用它,你当然可以添加像这样的扩展方法

public static bool IsNullOrEmpty(this string str)
{
    return string.IsNullOrEmpty(str);
}

然后你可以使用

ds1Question.Title.IsNullOrEmpty() ? "Dummy title" : ds1Question.Title.Trim();

答案 6 :(得分:1)

你几乎得到了它。试试这个:

dummy.Title = 
    string.IsNullOrEmpty(ds1Question.Title) ? 
    "Dummy title" : 
    ds1Question.Title.Trim();

答案 7 :(得分:0)

  

dummy.Title = string.IsNullOrEmpty(ds1Question.Title)? “假的头衔”   :ds1Question.Title.Trim();