Hafsa Bajwa Ответов: 3

Этот код не работает должным образом. Преобразование нижнего регистра в верхний не работает. Старшие плз проверяют ошибку.


статическая строка repvowel(string str)
{
char[] гласные = {'a','e','i','o','u'};
Список<char> a1 = гласные.OfType<char>().ToList(); ;
Проверьте новое окно инструментов(ул.);

for (int i = 0; i < sb.Length; i++)
{
если (a1.содержит(sb[i]))
{
sb.заменить(sb[i].Метод toString(),"%");
я--;
}
}
возвращение СБ.Метод toString();
}

статические репконы строк(string cons)
{
char[] word2 = минусы.ToCharArray();
for (int j = 0; j < word2.Length; j++)
{
если (word2[j] != 'a' &&
word2[j] != 'e' &&
word2[j] != 'i' &&
word2[j] != 'o' &&
word2[j] != 'u')
{
word2[j] = '#';
}
}
возвращает новую строку(слово2);
}

общественности статической строки верхней(строка КАС)
{
char[] word3 = cas.ToCharArray();

for (int l = 0; l < word3.Length; l++)
{
char ch = word3[l];
если (Char.IsLower(ч))
обуглить.Топпер(ch);
еще
обуглить.ToString(ch);
}
возвращает новую строку(слово3);
}


публичный статический пустота главный()
{
Приставка.WriteLine("введите первое слово");
строка str = консоль.Линия чтения();

Приставка.WriteLine("введите второе слово");
строка cons = консоль.Линия чтения();

Приставка.WriteLine("введите третье слово");
строка cas = консоль.Линия чтения();



Приставка.Напишите(repvowel(str));
Приставка.Пишите(репконы(минусы));
Приставка.Запись(верхний(cas));

Приставка.ReadKey();
}

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

static string repvowel(string str)
       {
           char[] vowels = {'a','e','i','o','u'};
           List<char> a1 = vowels.OfType<char>().ToList(); ;
           StringBuilder sb = new StringBuilder(str);

           for (int i = 0; i < sb.Length; i++)
           {
               if (a1.Contains(sb[i]))
               {
                   sb.Replace(sb[i].ToString(),"%");
                   i--;
               }
           }
           return sb.ToString();
       }

       static string repcons(string cons)
       {
           char[] word2 = cons.ToCharArray();
           for (int j = 0; j < word2.Length; j++)
           {
               if (word2[j] != 'a' &&
                   word2[j] != 'e' &&
                   word2[j] != 'i' &&
                   word2[j] != 'o' &&
                   word2[j] != 'u')
               {
                   word2[j] = '#';
               }
           }
           return new string(word2);
       }

       public static string upper(string cas)
       {
           char[] word3 = cas.ToCharArray();

           for (int l = 0; l < word3.Length; l++)
           {
               char ch = word3[l];
               if (Char.IsLower(ch))
                   char.ToUpper(ch);
               else
                   char.ToString(ch);
           }
           return new string(word3);
       }


       public static void Main()
       {
           Console.WriteLine("enter first word");
           string str = Console.ReadLine();

           Console.WriteLine("enter second word");
           string cons = Console.ReadLine();

           Console.WriteLine("enter third word");
           string cas = Console.ReadLine();



           Console.Write(repvowel(str));
           Console.Write(repcons(cons));
           Console.Write(upper(cas));

           Console.ReadKey();
       }

3 Ответов

Рейтинг:
1

Richard MacCutchan

for (int l = 0; l < word3.Length; l++)
{
    char ch = word3[l];
    if (Char.IsLower(ch))
        char.ToUpper(ch);
    else
        char.ToString(ch);
}
return new string(word3);

Посмотрите на код, вы преобразуете символ в его эквивалент верхнего регистра, но не сохраняете преобразованное значение. А почему ты звонишь char.ToString если это не нижний регистр?
Все, что вам нужно, это что-то вроде:

StringBuilder sbUpper = new StringBuilder();
foreach (char ch in word3)
{
    sbUpper.append(ch.ToUpper());
}
return sbUpper.ToString();


Рейтинг:
0

Mahesh Pratap Singh

В вашем коде

public static string upper(string cas)

замените этот код:
if (Char.IsLower(ch))
char.ToUpper(ch);
else
char.ToString(ch);

с этим:
if (Char.IsLower(ch))
word3[l] = char.ToUpper(ch);


Richard MacCutchan

Нет необходимости проверять, является ли он строчным.

Рейтинг:
0

George Swan

Вы можете заменить гласные с помощью Linq.

static string ReplaceVowels(string str)
      {
          char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
          var chars = str.Select(c => vowels.Any(v => v == c) ? '%' : c).ToArray();
          return new string(chars);
      }

Тот же формат можно использовать и для замены согласных
public static string ReplaceConsonants(string str)
      {
          char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
          var chars = str.Select(c => !vowels.Contains(c) ? '#' :c ).ToArray();
          return new string(chars);
      }

Преобразование строки в верхний регистр является функцией класса string.
public static string ToUpper(string str)
      {

          return str.ToUpper();
      }