Vijai Anand.G Ответов: 2

Как удалить последовательные гласные в каждом слове в любом данном предложении?


Всем Привет,

может ли кто-нибудь сказать мне лучший подход к решению этой проблемы?

Предположим, у меня есть предложение типа,

I/P: "sweet soong suung by richaard"

Мне нужно написать программу на c#, чтобы удалить последовательные гласные (a,e,i,o, u) в один соответствующий гласный в каждом слове данного предложения, чтобы вывести вывод типа

О/П : "песня света в исполнении Ричарда".

Что я уже пробовал:

class Program
    {
        
        static void Main(string[] args)
        {
            string inputString = Console.ReadLine();
            string outputString = RemoveVowels(inputString);
            Console.WriteLine(outputString);
            Console.ReadKey();
        }

        static string RemoveVowels(string inputString)
        {
            string tmpStr = "",retStr="";
            string[] splitStr = inputString.Split(Convert.ToChar(" "));
            foreach (var word in splitStr)
            {
                tmpStr = word.Replace("aa", "a").Replace("ee","e").Replace("ii","i").Replace("oo","o").Replace("uu","u");
                if (retStr == "")
                {
                    retStr = tmpStr;
                }
                else
                {
                    retStr += " " + tmpStr;
                }
            }

            return retStr;
        }
    }

F-ES Sitecore

Нет необходимости разделяться на "" и делать каждое слово по очереди, просто сделайте замену на всей строке, так что "heelloo woorld" станет "hello world". Ваш текущий код, вероятно, будет иметь проблемы, когда есть три буквы, как "ААА" станет "АА". Что бы я сделал, так это искал экземпляры "АА" (используйте IndexOf), и если один из них найден, замените "АА" на "А" и продолжайте делать это до тех пор, пока ни один экземпляр "АА" не будет найден. Возможно, Вам также придется подумать о проблемах с кейсами, так что же насчет "А вы там?"

Однако я сомневаюсь, что ваш наставник хочет, чтобы вы использовали Replace, это, вероятно, предназначено как упражнение в использовании массивов, так что вы, вероятно, провалите задание в любом случае.

Vijai Anand.G

с TQ..

2 Ответов

Рейтинг:
1

CPallini

static string RemoveVowels(string inputString)
    {
      string outoputString = string.Empty;
      char last = '?';
      foreach (char c in inputString)
      {
        if (c == last)
        {
          switch (c)
          {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
              break;
            default:
              outoputString += c;
              break;
          }
        }
        else
          outoputString += c;
        last = c;
      }
      return outoputString;
    }


Vijai Anand.G

с TQ..

Рейтинг:
0

OriginalGriff

Я бы использовал регулярное выражение:

public static Regex multipleVowels = new Regex("([AEIOUaeiou])\\1{1,}", RegexOptions.Multiline | RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled);
public static string regexReplace = "$+";
...
string result = multipleVowels.Replace(InputText,regexReplace);


Vijai Anand.G

с TQ..