Сначала я мог бы порекомендовать вам создать отдельный метод для возврата латинского перевода, а затем вызвать этот метод из события нажатия кнопки. Это обеспечивает лучшее повторное использование кода и приведет к более чистому коду.
Проблема в том, что вы перебираете все элементы в массиве гласных и меняете текст для каждой итерации. Вместо этого вам нужно просто определить, начинается ли слово с гласного или нет. Опять же, это может быть написано в другом методе (больше инкапсуляции кода, что означает, что это также может быть повторно использовано в другом месте, если это необходимо).
Обратите внимание, что я написал гласные как string
, но могу трактовать его как char[]
(потому что это действительно то, чем на самом деле являются строки), и хитрость здесь заключается в том, чтобы увидеть, является ли массив Contains
первый символ входной строки:
public static bool BeginsWithAVowel(string input)
{
if (string.IsNullOrWhiteSpace(input)) return false;
var vowels = "AaEeIiOoUu";
return vowels.Contains(input.Substring(0, 1));
}
Теперь мы можем использовать этот метод для проверки нашей строки в нашем методе преобразования латиноамериканских символов:
public static string ConvertToPigLatin(string input)
{
if (string.IsNullOrWhiteSpace(input)) return input;
if (BeginsWithAVowel(input))
{
// Add "way" to the end of the string and return it
return input + "way";
}
// Remove the first character and add it, plus "ay", to the end and return it
return input.Substring(1) + input.Substring(0, 1) + "ay";
}
Теперь в событии нажатия кнопки все, что нам нужно сделать, чтобы преобразовать текст, - это вызвать наш метод с исходным текстом, а затем установить свойство Text
для результата:
private void BtnTranslate_Click(object sender, EventArgs e)
{
txtPigLatin.Text = ConvertToPigLatin(txtEnglish.Text);
}