0

これは事実です - 私Textは a のプロパティを操作するToolStripItem必要があり、その前に文字列からすべての空白をクリアする必要があります。しかし、私は 3 つの非常に一般的な (私の意見では) シナリオを試しましたが、どちらも空白のない文字列を返しませんでした。これが私が試したものです:

string tempBtnText = tempItem.Text;

tempBtnTextプロパティを操作するメソッド内で定義されていTextます。私はこの方法の方が簡単だと思います。それから私はそれらを試しました:

tempBtnText.Replace(" ", String.Empty);
tempBtnText = Regex.Replace(tempItem.Text, @"^\s*$\n", string.Empty);
string tempBtnTexts = Regex.Replace(tempItem.Text, @"\s+", "");

これらはすべて、文字列を元の形式 (空白を含む) で返しました。空白を削除する唯一の方法は、次の方法を使用することでした:

public string RemoveWhitespace(string input)
{
    return new string(input.ToCharArray()
        .Where(c => !Char.IsWhiteSpace(c))
        .ToArray());
}

の同様の投稿で見つけましたSO。しかし、上記のアプローチがすべてうまくいかない理由が本当にわかりません。Text プロパティを使用しているという事実に関係があると思い始めていますが、最初にToolStripItem示したように、プロパティの値を取る独自の文字列変数を宣言しますText

知らない。この動作の理由は何ですか。空白をクリアするために別の方法を使用することはそれほど大きな問題ではありませんが、機能しないオプションははるかにコンパクトで読みやすいので、可能であればそのうちの1つを使用したいと思います.

4

3 に答える 3

5

文字列は immutableです。つまり、どの操作でも新しいインスタンスが生成されるため、メソッドの結果を入力に割り当てる必要があります。

string input = "...";
intput = intput.Replace(x, y);
于 2013-03-29T07:42:27.017 に答える
2

結果を代入していませんtempBtnText

tempBtnText.Replace(" ", String.Empty);

そのはず:

tempBtnText = tempBtnText.Replace(" ", String.Empty);

文字列はimmutableでありstring.Replace、新しい文字列を返します。既存の文字列は変更されません。

于 2013-03-29T07:43:33.940 に答える
1

アバティシェフは正しいので書いています

tempBtnText = tempBtnText.Replace(" ", String.Empty);

あなたの問題を解決するはずです。前後の空白のみを削除したい場合は、次を使用します。

tempBtnText = tempBtnText.Trim();
于 2013-03-29T07:45:05.903 に答える