我尝试了以下方法:
dummy.Title = ds1Question.Title.null ? "Dummy title" : ds1Question.Title.Trim();
我期待看到类似nullorempty
智能感知的东西,但似乎没有什么可以做到这一点。还有其他方法可以做到这一点吗?
这是无效的:
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 的回答使用,以避免标题为 " "直到它被修剪后才为空。
您可以更进一步地执行 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");
也许:
dummy.Title = string.IsNullOrEmpty(ds1Question.Title)
? "Dummy title" : ds1Question.Title.Trim();
或者
dummy.Title = string.IsNullOrWhiteSpace(ds1Question.Title)
? "Dummy title" : ds1Question.Title.Trim();
dummy.Title = string.IsNullOrEmpty(ds1Question.Title) ?
"Dummy title" : ds1Question.Title.Trim();
这是我使用的一些字符串扩展。我添加了一个以进行安全修剪。希望有人会发现这些有用。
/// <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());
}
}
您必须通过字符串静态方法调用它,
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();
你几乎明白了。试试这个:
dummy.Title =
string.IsNullOrEmpty(ds1Question.Title) ?
"Dummy title" :
ds1Question.Title.Trim();
dummy.Title = string.IsNullOrEmpty(ds1Question.Title) ?“虚拟标题”:ds1Question.Title.Trim();