2013-06-17 2 views
0

Я делаю игру Hangman в C# в WPF, и мне интересно, есть ли способ проверить, какие буквы находятся в строке, чтобы, если выбрана буква, программа может определить, письмо находится в выбранном слове или нет. Пример.Check What Letters are a String

String StackOverFlow; //Sample String 

//If Letter "A" is chosen, 
private void AButt_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) 
{ 
//What Would I Put Here? 
} 
+0

Поскольку это палач, вы также хотите знаете места размещения любых найденных писем или просто, является ли письмо в слове? –

+0

'char [] letters = StackOverflow.ToCharArray();' дает вам массив символов, который вы можете использовать, чтобы определить, есть ли «выбранная» буква в этом массиве или нет. Я помещал «selected» в кавычки, потому что вы не указали, как вы получаете вход пользователя. Через консоль? TextBox? – PoweredByOrange

+0

@ programmer93 Пользовательский ввод выполнен из текстового поля, которое нажимается, с конкретной буквой, в данном случае «A» – Andrew

ответ

4

Вы можете использовать Contains(), но это будет чувствительно к регистру. Виселица нет.

Самый простой способ справиться с этим является использование IndexOf() вместо:

if(StackOverFlow.IndexOf("A", StringComparison.CurrentCultureIgnoreCase) > -1) 
{ 
    // Found 
} 
else 
{ 
    // Not Found 
} 
+0

Почему существует "> -1"? Прошу прощения, если это простой вопрос, я noob :) – Andrew

+0

@Andrew - 'IndexOf()' вернет индекс соответствия. Если не найдено совпадение (строка не содержит символ, который вы проверяете), он вернет -1. –

+0

А, я вижу! Спасибо! – Andrew

2

Использование Contains:

StackOverFlow.Contains("A"); 

Если вы хотите знать, где в слове первой появляется буква, вы можете использовать IndexOf:

StackOverFlow = "EXAMPLE" 
StackOverFlow.IndexOf("A"); //returns 2 
StackOverFlow.IndexOf("B"); //returns -1 because it is not present 
+1

Также обратите внимание, что это вернет только индекс _first_ найденного символа. Например, поиск «l» в «Hello World» должен возвращать '{2, 3, 9}', а не только '2', если это необходимо для палача. –

2

Вы можете использовать String.Contais method. И не создавайте одного обработчика событий для каждой буквы - создайте только тот, который проверяет, какая буква была введена, а затем делайте что-то в соответствии с существующим в строке или нет.

+0

Да, это очень избыточно, но я новичок, поэтому хочу сохранить его простым. Благодаря! – Andrew

1

Вы можете использовать ToLower() первым для решения регистрозависимость: StackOverflow.ToLower().Contains("a")