15

我尝试了以下方法:

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

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

4

8 回答 8

29

这是无效的:

 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();

或者IsNullOrWhitespace按照 Marc 的回答使用,以避免标题为 " "直到它被修剪后才为空。

于 2012-11-09T11:10:32.180 回答
13

您可以更进一步地执行 Justin Harvey 的建议并实现一个扩展方法(当然是在静态类中),如下所示:

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");
于 2012-11-09T11:26:35.737 回答
11

也许:

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

或者

dummy.Title = string.IsNullOrWhiteSpace(ds1Question.Title)
             ? "Dummy title" : ds1Question.Title.Trim();
于 2012-11-09T11:10:41.657 回答
2
dummy.Title = string.IsNullOrEmpty(ds1Question.Title) ? 
                         "Dummy title" : ds1Question.Title.Trim();
于 2012-11-09T11:11:35.943 回答
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());
        }
    }
于 2015-06-04T00:10:01.607 回答
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();
于 2012-11-09T11:11:05.293 回答
1

你几乎明白了。试试这个:

dummy.Title = 
    string.IsNullOrEmpty(ds1Question.Title) ? 
    "Dummy title" : 
    ds1Question.Title.Trim();
于 2012-11-09T11:11:27.880 回答
0

dummy.Title = string.IsNullOrEmpty(ds1Question.Title) ?“虚拟标题”:ds1Question.Title.Trim();

于 2012-11-09T11:13:57.413 回答