Шифр StringBuilder: Программа не хочет работать с русским алфавитом - C#
Формулировка задачи:
Ребят, почему программа не хочет работать с русским алфавитом(224-255), а с английским работает(97-122)
Листинг программы
- using System;
- using System.Text;
- class Test
- {
- static void Main()
- {
- string originalText = "ЗАЩИТИМ ЗАМОК КОРОЛЯ"; // текст для шифрования
- Console.WriteLine(originalText);
- string plainText = Playfair.Prepare(originalText);
- Console.WriteLine(plainText);
- Console.ReadLine();
- }
- }
- public class Playfair
- {
- // Prepare удаляет все числа, пунктуацию, пробелы, верхний регистр преобразуется в нижний
- public static string Prepare(string originalText)
- {
- int length = originalText.Length;
- originalText = originalText.ToLower();
- StringBuilder sb = new StringBuilder();
- for(int i = 0; i < length; i++)
- {
- char c = originalText[i];
- if (c >= 224 && c <= 255)
- {
- // Если повторяющиеся буквы текста образуют одну пару для шифрования, то между буквами вставляется буква X
- if (sb.Length % 2 == 1 && sb[sb.Length - 1] == c)
- {
- sb.Append('х');
- }
- sb.Append(c);
- }
- }
- // Если строка является нечетной длины, добавить 'х'
- if (sb.Length % 2 == 1)
- {
- sb.Append('x');
- }
- return sb.ToString(); //вернем получившуюся строку
- }
Решение задачи: «Шифр StringBuilder: Программа не хочет работать с русским алфавитом»
textual
Листинг программы
- // Changed: 2014 10 02 6:54 PM : 5665tm
- using System;
- using System.Text;
- internal class Test
- {
- private static void Main()
- {
- string originalText = "My Car This Is Best Lol meeeeow"; // текст для шифрования
- Console.WriteLine(originalText);
- string plainText = Playfair.Prepare(originalText);
- Console.WriteLine(plainText);
- originalText = "Защитим заМок короляяяя "; // текст для шифрования
- Console.WriteLine(originalText);
- plainText = Playfair.Prepare(originalText, false);
- Console.WriteLine(plainText);
- Console.ReadLine();
- }
- }
- public static class Playfair
- {
- // Prepare удаляет все числа, пунктуацию, пробелы, верхний регистр преобразуется в нижний
- public static string Prepare(string originalText, bool eng = true)
- {
- int length = originalText.Length;
- originalText = originalText.ToLower();
- var sb = new StringBuilder();
- int min = eng ? 97 : 1040;
- int max = eng ? 122 : 1103;
- for (int i = 0; i < length; i++)
- {
- char c = originalText[i];
- if (c >= min && c <= max)
- {
- // Если повторяющиеся буквы текста образуют одну пару для шифрования, то между буквами вставляется буква X
- if (sb.Length%2 == 1 && sb[sb.Length - 1] == c)
- {
- sb.Append('х');
- }
- sb.Append(c);
- }
- }
- // Если строка является нечетной длины, добавить 'х'
- if (sb.Length%2 == 1)
- {
- sb.Append('x');
- }
- return sb.ToString(); //вернем получившуюся строку
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д