繁体   English   中英

替换字符串值 C# 的简单问题

[英]Simple problem with replacing string value C#

我有点纠结于一个应该是平庸的问题,但似乎我无法实施解决方案。

我有按钮,每个按钮都有一个字符,准确地说是 26 个(英文字母),当我单击其中任何一个时,循环会遍历按钮上的文本值的字符串并将其替换为引号。

该代码有效,它打印出没有单击字符的 newAlphabet。 但是,当我单击另一个按钮时,它会返回 newAlphabet 尽管带有先前删除的字符并删除新的单击字符。

代码如下

static string alphabet = "abcdefghijklmnopqrstuvwxyz";
static string newAlphabet = string.Empty;
Button tempBtn = (Button)sender;

for (int i = 0; i < alphabet.Length; i++)
{
  if (alphabet[i].ToString().Contains(tempBtn.Text))
  {
    newAlphabet = alphabet.Replace(tempBtn.Text, ""); 

    MessageBox.Show(newAlphabet);
  }
}

抱歉语法或拼写错误,英语不是我的第一语言。

问候,慧聪

这条线

 newAlphabet = alphabet.Replace(tempBtn.Text, ""); 

意味着您总是回到"abcdefghijklmnopqrstuvwxyz"并替换它。

如果要继续替换字母,则需要在newAlphabet上进行替换。

一个更简单的解决方案是:

static string alphabet = "abcdefghijklmnopqrstuvwxyz";

private void button1_Click(object sender, EventArgs e)
{
  var tempBtn = (Button)sender;
  alphabet = alphabet.Replace(tempBtn.Text, "");
  MessageBox.Show(alphabet);
}

注1:
如果您发布的代码在您的按钮单击事件方法中,那么它将无法编译。 在 C# 中,您不能在方法内声明变量 static。

笔记2:
字符串是不可变的,因此alphabet.Replace()返回一个新字符串而不影响原始字符串。

如果目标是从列表中删除单击的字母:

static string newAlphabet = "abcdefghijklmnopqrstuvwxyz";
Button tempBtn = (Button)sender;

newAlphabet = newAlphabet.Replace(tempBtn.Text, ""); 

MessageBox.Show(newAlphabet);

请注意,字符串在 C# 中是不可变的。 “newAlphabet”不断被修改后的“alphabet”所取代。 它永远不会粘住。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM