Шифр 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(); //вернем получившуюся строку
}
}