Gå til innhold

Bytte alle bokstaver unntatt en bokstav med Regular Expression


Anbefalte innlegg

er relativt ny i C# og holder på å lage en hangman. Programmet henter et tilfeldig ord og lagrer det i en string, oldWord. ordet blir gjort om til "_ _ _ _osv.." som blir lagret i en annen string, newWord.. Det jeg sliter med er å sette inn bokstaver som blir funnet i newWord.. er det en enkel måte å gjøre dette med regular expressions?

 

får til å erstatte bokstaven som blir funnet med "_".. men det hjelper lite :roll::


       void hangmman(string letter)
       {
           if (Regex.IsMatch(oldWord, letter))
           {
               string pattern = letter;
               string replacement = " _";
               Regex rgx = new Regex(pattern);
               newWord = rgx.Replace(oldWord, replacement);

               MessageBox.Show("nice!");

           }

           label1.Text = newWord;
       }


Endret av Watt
Lenke til kommentar
Videoannonse
Annonse

Noe sånt du er ute etter?

void hangmman(string letter)
       {
           if (Regex.IsMatch(oldWord, letter))
           {
               string pattern = "[^" + letter + "]";
               string replacement = " _";
               Regex rgx = new Regex(pattern);
               newWord = rgx.Replace(oldWord, replacement);

               MessageBox.Show("nice!");

           }

           label1.Text = newWord;
       }

Patternet bør vel også akkumulere opp alle gjettede bokstaver om det skal bli noe fremgang...

Endret av MailMan13
Lenke til kommentar

Noe sånt du er ute etter?

void hangmman(string letter)
       {
           if (Regex.IsMatch(oldWord, letter))
           {
               string pattern = "[^" + letter + "]";
               string replacement = " _";
               Regex rgx = new Regex(pattern);
               newWord = rgx.Replace(oldWord, replacement);

               MessageBox.Show("nice!");

           }

           label1.Text = newWord;
       }

Patternet bør vel også akkumulere opp alle gjettede bokstaver om det skal bli noe fremgang...

ypperlig! akkurat det jeg var ute etter :new_woot:

hehe, selfølgelig. Er ikke riktig ferdig enda :D

Lenke til kommentar
class Hangman
{
   public string Sentance { get; set; }
   private List<char> Guessed { get; set; }
   public void Guess(char c) { if(!Guessed.Contains(c)) Guessed.Add(c); }
   public Hangman() { Guessed = new List<char>(); }
   public string ToString()
   {
       return new string(Sentance.Select(c => Guessed.Contains(c) ? c : '_').ToArray());
   }
   public bool CheckResult(out string result)
   {
       result = ToString();
       return !result.Contains('_');
   }
}

Lenke til kommentar

byttet ut regex med stringbuilder.. kanskje ikke veldig elegant, men funker til mitt bruk :thumbup:

 

       void hangman(string letter, Label l)
       {
           int found = word.IndexOf(letter);
           StringBuilder sb = new StringBuilder(hiddenWord);

           if (found != -1)
           {
               if (lettersEntered.Contains(letter))
                   MessageBox.Show("Letter is already entered!");
               else
               {
                   while (found != -1)
                   {
                       sb.Remove(found, 1);
                       sb.Insert(found, letter);
                       found = word.IndexOf(letter, ++found);
                   }

                   hiddenWord = sb.ToString();
                   hiddenWordLabel.Text = hiddenWord;
                   lettersEntered.Add(letter);
               }
           }

           else
           {
               if (lettersEntered.Contains(letter))
                   MessageBox.Show("Letter is already entered!");

               else
               {
                   lettersEntered.Add(letter);
                   label1.Text += " " + lettersEntered.Last();
               }

           } 

           l.Enabled = false;    
       }

Endret av Watt
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...