私は次のことを試しました:
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();
それはデフォルト値への不必要なトリミングを実行しますが、それは簡単です。
ただし、これらは nullity のみをチェックします。空かどうかも確認するには、 を呼び出す必要がありますString.IsNullOrEmpty
。これは、正気のために追加の変数を介して行います。
string title = ds1Question.Title;
dummy.Title = string.IsNullOrEmpty(title) ? "Dummy title" : title.Trim();
IsNullOrWhitespace
または、マークの回答に従って使用して、トリムされるまで空ではない " " というタイトルを付けないようにします。
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();
ここに私が使用するいくつかの文字列拡張があります。安全なトリミングを行うために1つ追加しました。うまくいけば、誰かがこれらが役に立つと思うでしょう。
/// <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();
ダミー.タイトル = string.IsNullOrEmpty(ds1Question.Title) ? 「ダミータイトル」:ds1Question.Title.Trim();