我尝试了以下内容:
dummy.Title = ds1Question.Title.null ? "Dummy title" : ds1Question.Title.Trim();
我期待看到像nullorempty
这样的智能感知,但似乎没有任何东西可以做到这一点。还有其他方法可以做到这一点吗?
答案 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();