Очевидно, я новичок в этом, отсюда и содержание этого проекта. Я написал код, который переведет английский на Pig Latin . Достаточно просто. Проблема в том, что я хочу найти способ перевести Pig Latin обратно на английский, используя логический блок. Строка клона просто кажется дешевым способом сделать это. Какие-либо предложения? Вот мой код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace FunctionTest
{
public class PigLatinClass
{
public static void pigTalk(string sentence)
{
try
{
while (sentence != "exit")
{
string firstLetter;
string afterFirst;
string pigLatinOut = "";
int x;
string vowel = "AEIOUaeiou";
Console.WriteLine("Enter a sentence to convert into PigLatin");
sentence = Console.ReadLine();
string[] pieces = sentence.Split();
foreach (string piece in pieces)
{
afterFirst = piece.Substring(1);
firstLetter = piece.Substring(0, 1);
x = vowel.IndexOf(firstLetter);
if (x == -1)
{
pigLatinOut = (afterFirst + firstLetter + "ay ");
}
else
{
pigLatinOut = (firstLetter + afterFirst + "way ");
}
Console.Write(pigLatinOut);
}
Console.WriteLine("Press Enter to flip the sentence back.");
Console.ReadKey(true);
string clonedString = null;
clonedString = (String)sentence.Clone();
Console.WriteLine(clonedString);
}
}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}
}
}
Проблема в том, что нет настоящего правила, которое бы работало. Например: если 3-я буква
из последнего было "w", вы можете сказать, что это гласное слово, но согласное слово, начинающееся с "w", также может соответствовать этому правилу. Если первая буква снова была гласной, вы можете сказать, что это слово гласная, но согласное слово также может соответствовать этому правилу, так как первая буква перемещается назад (pat = atpay). Единственный способ, которым я думаю, что это возможно, - это иметь оператор if, который проверяет, находится ли w в 3-й позиции, и слово начинается с гласной, которая будет вызывать оператор &&, и Visual Studio кричит на вас, если вы используете его со строками.