Шифр 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(); //вернем получившуюся строку } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д