Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查字符串中是否存在字符串,以及是否更改了该字符串中的字母_C#_String - Fatal编程技术网

C# 检查字符串中是否存在字符串,以及是否更改了该字符串中的字母

C# 检查字符串中是否存在字符串,以及是否更改了该字符串中的字母,c#,string,C#,String,我正在制作一个刽子手游戏。这是一个双人游戏,一个玩家在文本框中输入一个单词。该单词以问号显示 例如: 单词Hello将在文本框中显示为?? 我遇到的问题是,当玩家猜到一个字母时,如何更改文本框中的文本。如果玩家猜到文本框中的“H”并输入它,我希望其他文本更改为H???。如何做到这一点?您可以使用如下BuildMask()方法。当第一个文本框中的文本发生变化时,将其字符添加到哈希集中,调用BuildMask,然后将结果放入第二个文本框。如果你想不区分大小写,你可以在hashset构造函数中添加一个

我正在制作一个刽子手游戏。这是一个双人游戏,一个玩家在文本框中输入一个单词。该单词以问号显示

例如:

单词
Hello
将在
文本框中显示为
??


我遇到的问题是,当玩家猜到一个字母时,如何更改
文本框中的文本。如果玩家猜到
文本框中的“H”并输入它,我希望其他文本更改为
H???
。如何做到这一点?

您可以使用如下BuildMask()方法。当第一个文本框中的文本发生变化时,将其字符添加到哈希集中,调用BuildMask,然后将结果放入第二个文本框。如果你想不区分大小写,你可以在hashset构造函数中添加一个IEqualityComparer,如果你用谷歌搜索它,你可以找到解决方案

static void Main(string[] args)
{
    var guessThis = "Hello";
    var letters = new HashSet<char>();

    Console.WriteLine(BuildMask(guessThis, letters));
    letters.Add('l');
    Console.WriteLine(BuildMask(guessThis, letters));
    letters.Add('H');
    Console.WriteLine(BuildMask(guessThis, letters));
}

static string BuildMask(string toGuess, HashSet<char> letters)
{
    var result = new StringBuilder();

    foreach (var c in toGuess)
    {
        if (letters.Contains(c))
            result.Append(c);
        else
            result.Append('?');
    }

    return result.ToString();
}
static void Main(字符串[]args)
{
var guessThis=“你好”;
var letters=newhashset();
Console.WriteLine(BuildMask(猜这个,字母));
字母。添加('l');
Console.WriteLine(BuildMask(猜这个,字母));
字母。添加('H');
Console.WriteLine(BuildMask(猜这个,字母));
}
静态字符串构建掩码(字符串toGuess、HashSet字母)
{
var result=新的StringBuilder();
foreach(变量c在toGuess中)
{
如果(字母包含(c))
结果:追加(c);
其他的
结果.追加('?');
}
返回result.ToString();
}

您可以使用如下BuildMask()方法。当第一个文本框中的文本发生变化时,将其字符添加到哈希集中,调用BuildMask,然后将结果放入第二个文本框。如果你想不区分大小写,你可以在hashset构造函数中添加一个IEqualityComparer,如果你用谷歌搜索它,你可以找到解决方案

static void Main(string[] args)
{
    var guessThis = "Hello";
    var letters = new HashSet<char>();

    Console.WriteLine(BuildMask(guessThis, letters));
    letters.Add('l');
    Console.WriteLine(BuildMask(guessThis, letters));
    letters.Add('H');
    Console.WriteLine(BuildMask(guessThis, letters));
}

static string BuildMask(string toGuess, HashSet<char> letters)
{
    var result = new StringBuilder();

    foreach (var c in toGuess)
    {
        if (letters.Contains(c))
            result.Append(c);
        else
            result.Append('?');
    }

    return result.ToString();
}
static void Main(字符串[]args)
{
var guessThis=“你好”;
var letters=newhashset();
Console.WriteLine(BuildMask(猜这个,字母));
字母。添加('l');
Console.WriteLine(BuildMask(猜这个,字母));
字母。添加('H');
Console.WriteLine(BuildMask(猜这个,字母));
}
静态字符串构建掩码(字符串toGuess、HashSet字母)
{
var result=新的StringBuilder();
foreach(变量c在toGuess中)
{
如果(字母包含(c))
结果:追加(c);
其他的
结果.追加('?');
}
返回result.ToString();
}

检查此完整代码

    public partial class MainWindow : Window
    { 
       string CurrentString = null;
       string modifiedstring = null;

      public MainWindow()
      {
          InitializeComponent();
       }



    private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        var textBox = sender as TextBox;
        string value = textBox.Text.Replace("\r\n", "").Replace("\n", "").Replace("\r", "");
        if (null != CurrentString)
        {
            if (CurrentString.Contains(value))
            {
                StringBuilder newstring = new StringBuilder();
                foreach (char c in CurrentString)
                {

                    if (value.ToLower().Equals(c.ToString()))
                    {
                        newstring.Append(value);
                    }
                    else
                    {
                        newstring.Append("?");
                    }
                }
                modifiedstring = newstring.ToString();
                text1.Text = modifiedstring;

            }

        }

    }

    private void TextBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
            var textBox = sender as TextBox;
            string value = textBox.Text.Replace("\r\n", "").Replace("\n", "").Replace("\r", "");
            CurrentString = value;
            StringBuilder newstring = new StringBuilder();
            for (int i = 0; i < value.Length; i++)
            {
                newstring.Append("?");
            }
            textBox.Text = newstring.ToString();
        }
    }
        }
    }
公共部分类主窗口:窗口
{ 
字符串CurrentString=null;
字符串modifiedstring=null;
公共主窗口()
{
初始化组件();
}
私有void TextBox\u TextChanged(对象发送者,textchangedventargs e)
{
var textBox=发送方作为textBox;
字符串值=textBox.Text.Replace(“\r\n”,”).Replace(“\n”,”).Replace(“\r”,”);
如果(null!=CurrentString)
{
if(CurrentString.Contains(value))
{
StringBuilder newstring=新的StringBuilder();
foreach(CurrentString中的字符c)
{
if(value.ToLower().Equals(c.ToString()))
{
newstring.Append(值);
}
其他的
{
新闻字符串。追加(“?”);
}
}
modifiedstring=newstring.ToString();
text1.Text=modifiedstring;
}
}
}
私有void文本框\u KeyDown(对象发送方,KeyEventArgs e)
{
如果(e.Key==Key.Enter)
{
var textBox=发送方作为textBox;
字符串值=textBox.Text.Replace(“\r\n”,”).Replace(“\n”,”).Replace(“\r”,”);
CurrentString=值;
StringBuilder newstring=新的StringBuilder();
for(int i=0;i
检查此完整代码

    public partial class MainWindow : Window
    { 
       string CurrentString = null;
       string modifiedstring = null;

      public MainWindow()
      {
          InitializeComponent();
       }



    private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
    {
        var textBox = sender as TextBox;
        string value = textBox.Text.Replace("\r\n", "").Replace("\n", "").Replace("\r", "");
        if (null != CurrentString)
        {
            if (CurrentString.Contains(value))
            {
                StringBuilder newstring = new StringBuilder();
                foreach (char c in CurrentString)
                {

                    if (value.ToLower().Equals(c.ToString()))
                    {
                        newstring.Append(value);
                    }
                    else
                    {
                        newstring.Append("?");
                    }
                }
                modifiedstring = newstring.ToString();
                text1.Text = modifiedstring;

            }

        }

    }

    private void TextBox_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
            var textBox = sender as TextBox;
            string value = textBox.Text.Replace("\r\n", "").Replace("\n", "").Replace("\r", "");
            CurrentString = value;
            StringBuilder newstring = new StringBuilder();
            for (int i = 0; i < value.Length; i++)
            {
                newstring.Append("?");
            }
            textBox.Text = newstring.ToString();
        }
    }
        }
    }
公共部分类主窗口:窗口
{ 
字符串CurrentString=null;
字符串modifiedstring=null;
公共主窗口()
{
初始化组件();
}
私有void TextBox\u TextChanged(对象发送者,textchangedventargs e)
{
var textBox=发送方作为textBox;
字符串值=textBox.Text.Replace(“\r\n”,”).Replace(“\n”,”).Replace(“\r”,”);
如果(null!=CurrentString)
{
if(CurrentString.Contains(value))
{
StringBuilder newstring=新的StringBuilder();
foreach(CurrentString中的字符c)
{
if(value.ToLower().Equals(c.ToString()))
{
newstring.Append(值);
}
其他的
{
新闻字符串。追加(“?”);
}
}
modifiedstring=newstring.ToString();
text1.Text=modifiedstring;
}
}
}
私有void文本框\u KeyDown(对象发送方,KeyEventArgs e)
{
如果(e.Key==Key.Enter)
{
var textBox=发送方作为textBox;
字符串值=textBox.Text.Replace(“\r\n”,”).Replace(“\n”,”).Replace(“\r”,”);
CurrentString=值;
StringBuilder newstring=新的StringBuilder();
for(int i=0;i
通过在同一文本框或其他控件中输入,用户是如何猜测的?Winforms、WPF、ASP请添加一个标记