c# unity 空白 - String.EmptyのようなChar.Emptyがないのはなぜですか?





9 Answers

charは、文字列とは異なり、固定サイズの離散事物です。 文字列は実際には文字のコンテナです。

だから、Char.Emptyはその文脈では本当に意味をなさない。 あなたがcharを持っているなら、それは空ではありません。

isnullorempty using msdn

これには理由がありますか? 空の文字列をたくさん使用する必要がある場合は、空の文字列をたくさん使用するときと同じ状況になるため、私は尋ねています。

編集:この使用の理由はこれでした:

myString.Replace ('c', '')

したがって、myStringから 'c'のすべてのインスタンスを削除します。




nullable文字を使用できます。

char? c



文字列全体が必要ない場合は、遅延実行を利用することができます。

public static class StringExtensions
{
    public static IEnumerable<char> RemoveChar(this IEnumerable<char> originalString, char removingChar)
    {
        return originalString.Where(@char => @char != removingChar);
    }
}

複数の文字を組み合わせることもできます...

string veryLongText = "abcdefghijk...";

IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
            .RemoveChar('c')
            .RemoveChar('d')
            .Take(5);

...最初の7文字だけが評価されます:)

編集:または、さらに良い:

public static class StringExtensions
{
    public static IEnumerable<char> RemoveChars(this IEnumerable<char> originalString,
        params char[] removingChars)
    {
        return originalString.Except(removingChars);
    }
}

その使用法:

        var veryLongText = "abcdefghijk...";
        IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
            .RemoveChars('c', 'd')
            .Take(5)
            .ToArray(); //to prevent multiple execution of "RemoveChars"



charは値型であるため、その値はnullにはなりません。 (Nullableコンテナにラップされていない場合)。

ヌルにすることはできないため、inはいくつかの数値コードを含み、各コードはある文字にマップされます。




あなたの質問への答えではなく、あなたが使うことができるデフォルトのcharを示すために

default(char)

char.MinValueと同じchar.MinValueこれは\0と同じです。 しかし空の文字列のようなもののために使うべきではありません。




また、削除したい文字を除いて、文字単位で文字列を再構築することもできます。

これを行う拡張メソッドは次のとおりです。

    static public string RemoveAny(this string s, string charsToRemove)
    {
        var result = "";
        foreach (var c in s)
            if (charsToRemove.Contains(c))
                continue;
            else
                result += c;

        return result;
    }

それは滑らかではないかと思いますが、うまくいきます。

このように使う:

string newString = "My_String".RemoveAny("_"); //yields "MyString"



BOMは、Microsoftがファイルの開始に追加する魔法のキャラクター(少なくともXML)はいかがですか?




C#言語では、以下のことはあまり意味がないかもしれません。 そして、これは質問への直接的な答えではありません。 しかし、私のビジネスシナリオの1つでは、

        char? myCharFromUI = Convert.ToChar(" ");
        string myStringForDatabaseInsert = myCharFromUI.ToString().Trim();
        if (String.IsNullOrEmpty(myStringForDatabaseInsert.Trim()))
        {
            Console.Write("Success");
        }

nullwhite spaceは私のプロジェクトでは異なるビジネスフローを持っていました。 データベースに挿入する際にempty string場合はempty stringをデータベースに挿入する必要があります。




つかいます

myString.Replace ("c", "")



Related