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

それはデフォルト値への不必要なトリミングを実行しますが、それは簡単です。

ただし、これらは nullity のみをチェックします。空かどうかも確認するには、 を呼び出す必要がありますString.IsNullOrEmpty。これは、正気のために追加の変数を介して行います。

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

IsNullOrWhitespaceまたは、マークの回答に従って使用して、トリムされるまで空ではない " " というタイトルを付けないようにします。

于 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

ここに私が使用するいくつかの文字列拡張があります。安全なトリミングを行うために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());
        }
    }
于 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

ダミー.タイトル = string.IsNullOrEmpty(ds1Question.Title) ? 「ダミータイトル」:ds1Question.Title.Trim();

于 2012-11-09T11:13:57.413 に答える