Назад
Создание прибыльного бизнеспроекта на базе сайта

SEO + ASP.NET 4.0 + БИЗНЕСМОДЕЛЬ = ПРИБЫЛЬНЫЙ САЙТ

Инструмент быстрого построения прибыльного онлайн бизнеса своими силами без капиталовложений за 4 месяца все подробности на SEO + ASP.NET 4.0.

Подписка на рассылку

МАГИЯ C#!

Создание вебсайта с формой автоматического приема онлайн платежей по WebMoney!
Ваше имя
Ваш e-mail
Уроки по ASP.NET c# ADO.NET
     

18 видеоуроков
более 5 часов
по созданию сайта,
выполняющего
продажи ваших продуктов (физических/электронных) на полном автомате с личным оповещением на e-mail, а также ...
DVD-курс по C#, .NET

3 часть. Введение в ASP.NET. WebServices Профессиональная подготовка разработчика по языку C# на платформе .NET

asp.net webservices dvd c# gridview Гудок курс Более 65 подробных видео уроков по теоретическим основам технологии сайтостроения ASP.NET и процессу создания и использованию вебсервисов.

DVD-курс по C#, .NET

2А часть. XML/TXT в аспекте ADO.NET Профессиональная подготовка разработчика по языку C# на платформе .NET

xml txt dvd c# ADO ADO.NET Гудок курс 70 подробных видео уроков по работе с форматами xml, txt, по работе с файлами и директориями. Разработка высокоорганизованных свойств для значительного сокращения объема исходного кода и облегчения дальнейшей модификации и многое-многое другое...

DVD-курс по C#, .NET

1 часть. Windows Forms Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок

185 подробнейших уроков (70 часов) лекций в формате видеоуроков по теории языка c# и платформы .NET. Практическое закрепление теоретического материала на примере создания Windows Forms - приложения видеоигры "Tanks"

DVD-курс по C#, .NET

2 часть. ADO.NET/SQL Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок ADO.NET sql

165 подробных видео уроков по созданию приложений распределенных баз данных на примере разработки проектов с использований технологий ADO.NET (Connected model, Disconnected model, Typed DataSet, ...)


Я записываю курсы!
  Курс валют

НБУ курс евро






c# - Символьные массивы



Похожая тема Строковые массивы типа string в c#

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

  • отдельные символы, чаще всего, его называют типом char;
  • строки постоянной длины, часто они представляются массивом символов;
  • строки переменной длины – это, как правило, тип string, соответствующий современному представлению о строковом типе.

Символьный тип char, представляющий частный случай строк длиной в 1 символ, полезен во многих задачах. Основные операции над строками – это разбор и сборка. При их выполнении приходится, чаще всего, доходить до каждого символа строки. При таком подходе получение i-го символа строки становится такой же простой операцией, как и получение i-го элемента массива. Следовательно, эффективно реализуются обычные операции над строками – определение вхождения одной строки в другую, выделение подстроки, замена символов строки. Однако заметьте, представление строки массивом символов хорошо только для строк постоянной длины. Массив не приспособлен к изменению его размеров, вставки или удалению символов (подстрок). Наиболее часто используемым строковым типом является тип, обычно называемый string, который задаёт строки переменной длины. Над этим типом допускаются операции поиска вхождения одной строки в другую, операции вставки, замены и удаления подстрок.

1) Класс Char:

В C# есть символьный класс Char, основанный на классе System.Char и использующий двухбайтную кодировку Unicode представления символов. Для этого типа в языке определены символьные константы (символьные литералы). Константу можно задавать:

  • символом, заключенным в одинарные кавычки;
  • escape-последовательностью, задающей код символа;
  • Unicode-последовательностью, задающей Unicode-код символа.

Вот несколько примеров объявления символьных переменных и работы с ними:

// обычный символ, обычная последовательность, Unicode-последовательность
char ch1 = 'A';
// обычная ESC-последовательность – код символа Z
char ch2 = '\x5A';
// Unicode-последовательность – код символа X
char ch3 = '\u0058';
// объявление в объектном стиле в динамической памяти
char ch = new Char();
// присваивание по правилам присваивания
// значения ссылочному типу 
ch = ch1; // значение ‘A’
// неявное преобразование символьного типа в тип int 
 int code;	
code = ch; // в code – значение 65
// явное преобразование – в ch1 будет значение ‘B’  
ch1 = (char)(code +1);
// преобразование символьного типа в строку
string s;
// s = ch; // это некорректно – разные типы	
// преобразование типов – в строке будет значение BZX
s = ch1.ToString() + ch2.ToString() + ch3.ToString();

У класса Char имеется ряд свойств и статических методов:

Класс Char. Члены класса Char

Методы в основном перегружены. Это значит, что они могут применяться как к отдельному символу, так и к отдельному символу строки. Основную группу составляют методы Is, крайне полезные при разборе строки. Вот примеры, в которых используются многие из перечисленных методов:

Console.WriteLine("Статические методы класса char:");
char ch = 'a', ch1 = '1', lim = ';', chc = '\xA';
double d1, d2;
d1 = char.GetNumericValue(ch);
d2 = char.GetNumericValue(ch1);
Console.WriteLine("Метод GetNumericValue:");
Console.WriteLine("sym 'a' - value {0}", d1);
Console.WriteLine("sym '1' - value {0}", d2);
System.Globalization.UnicodeCategory cat1, cat2;
cat1 = char.GetUnicodeCategory(ch1);
cat2 = char.GetUnicodeCategory(lim);
Console.WriteLine("Метод GetUnicodeCategory:");
Console.WriteLine("sym '1' - category {0}", cat1);
Console.WriteLine("sym ';' - category {0}", cat2);
Console.WriteLine("Метод IsControl:");
Console.WriteLine("sym '\xA' - IsControl - {0}",
   char.IsControl(chc));
Console.WriteLine("sym ';' - IsControl - {0}",
   char.IsControl(lim));
Console.WriteLine("Метод IsSeparator:");
Console.WriteLine("sym ' ' - IsSeparator - {0}",
   char.IsSeparator(' '));
Console.WriteLine("sym ';' - IsSeparator - {0}",
   char.IsSeparator(lim));
Console.WriteLine("Метод IsSurrogate:");
Console.WriteLine("sym '\u10FF' - IsSurrogate - {0}", 
    char.IsSurrogate('\u10FF'));
Console.WriteLine("sym '\\' - IsSurrogate - {0}",
    char.IsSurrogate('\\'));
string str = "\U00010F00";
// Символы Unicode в интервале [0x10000,0x10FFF]
// представляются двумя 16-битными
//суррогатными символами
Console.WriteLine("str = {0}, str[0] = {1}",
   str, str[0]);    
Console.WriteLine("str[0] IsSurrogate - {0}",
   char.IsSurrogate(str, 0));
Console.WriteLine("Метод IsWhiteSpace:");
str ="пробелы, пробелы!" + "\xD" + "\xA" +
   "Всюду пробелы!";  
Console.WriteLine("sym '\xD ' - IsWhiteSpace - {0}",
   char.IsWhiteSpace('\xD'));
Console.WriteLine("str: {0}", str);
Console.WriteLine("и ее пробелы - символ 8 {0}," +
   "символ 17 {1}", 
   char.IsWhiteSpace(str,8),
   char.IsWhiteSpace(str,17));
Console.WriteLine("Метод Parse:");
str ="A";
ch = char.Parse(str);
Console.WriteLine("str:{0}  char: {1}",str, ch);
Console.WriteLine("Минимальное и максимальное " +
   "значение: {0}, {1}", 
   char.MinValue.ToString(),
   char.MaxValue.ToString());
Console.WriteLine("Их коды: {0}, {1}", 
    SayCode(char.MinValue), SayCode(char.MaxValue));

Результаты консольного вывода, порождённого выполнением метода, изображены ниже.

Тип Char

Кроме статических методов, у класса Char есть и динамические. Большинство из них - это методы родительского класса Object, унаследованные и переопределённые в классе Char. Из собственных динамических методов стоит отметить метод CompareTo, позволяющий проводить сравнение символов. Он выдаёт для несовпадающих символов "расстояние" между символами в соответствии с их упорядоченностью в кодировке Unicode. Вот пример:

char ch1, ch2;
int dif;
Console.WriteLine("Метод CompareTo");
ch1 = 'A'; 
ch2 = 'Z';
dif = ch1.CompareTo(ch2);
Console.WriteLine("Расстояние между символами {0},"
   + " {1} = {2}", ch1, ch2, dif);
ch1 = 'а';
ch2 = 'А';
dif = ch1.CompareTo(ch2);
Console.WriteLine("Расстояние между символами {0},"
   + " {1} = {2}", ch1, ch2, dif);
ch1 = 'Я';
ch2 = 'А';
dif = ch1.CompareTo(ch2);
Console.WriteLine("Расстояние между символами {0},"
   + "{1} = {2}", ch1, ch2, dif);
ch1 = 'A';
ch2 = 'A';
dif = ch1.CompareTo(ch2);
Console.WriteLine("Расстояние между символами {0},"
   + " {1} = {2}", ch1, ch2, dif);
ch1 = 'А';
ch2 = 'A';
dif = ch1.CompareTo(ch2);
Console.WriteLine("Расстояние между символами {0},"
   + " {1} = {2}", ch1, ch2, dif);
ch1 = 'Ё';
ch2 = 'А';
dif = ch1.CompareTo(ch2);
Console.WriteLine("Расстояние между символами {0},"
   + " {1} = {2}", ch1, ch2, dif);

Результаты сравнения – ниже.

Тип Char

Анализируя эти результаты, можно понять, что в кодировке Unicode как латиница, так и кириллица плотно упакованы. Исключение составляет буква Ё - заглавная и малая – они выпадают из плотной кодировки. Малые буквы в кодировке непосредственно следуют за заглавными буквами. Расстояние между алфавитами в кодировке довольно большое – русская буква А на 975 символов правее в кодировке, чем соответствующая буква в латинском алфавите.

2) Класс Char []:

В языке C# определен класс Char[], и его можно использовать для представления строк постоянной длины. Вместе с тем, массив char[] – это обычный массив. Более того, его нельзя инициализировать строкой символов. Константа, задающая строку символов, принадлежит классу String, а в C# не определены взаимные преобразования между классами String и Char[], даже явные. У класса String есть, правда, динамический метод ToCharArray, задающий подобное преобразование. Возможно также посимвольно передать содержимое переменной string в массив символов. Вот пример:

// ошибка: нет преобразования класса string в класс char[]
// char[] strM1 = "Привет посетителям сайта!";
// а надо так:
string hello = "Привет посетителям сайта!";
char[] strM1 = hello.ToCharArray();
// вывод на экран посимвольно			
for(int i = 0; i < strM1.Length; i++)
      Console.Write(strM1[i]);
Console.WriteLine();
// копирование подстроки методом класса Array
char[] World = new char[3];
Array.Copy(strM1,12,World,0,3);
// вывод массива с преобразованием в строку
Console.WriteLine(CharArrayToString(World));

Метод ToCharArray позволяет преобразовать строку в массив символов. К сожалению, обратная операция не определена, поскольку метод ToString, которым, конечно же, обладают все объекты класса Char[], печатает информацию о классе, а не содержимое массива. Ситуацию легко исправить, написав соответствующий цикл. Например:

string result = "";
for(int i = 0; i < strM1.Length; i++)
   result = result + strM1[i];

return(result);

Класс Char[], как и всякий класс-массив в C#, является наследником не только класса Object, но и класса Array, и, следовательно, обладает всеми методами родительских классов.



Больше информации читайте по теме:

Массивы в C#
Операторы языка C#
Операции языка C# и особенности их использования
Шифрование на c# (хеш-код строки по алгоритму MD5)
Отписка от событий в c#
Примеры регулярных выражений на c# (класс RegularExpressions.Regex)
c# - итератор для списка Dictionary (foreach для словаря)
Перемешивание списков (массивов) любых типов на c# - противоположность сортировки
c# - CultureInfo (IFormatProvider) и конвертация, приведение числовых типов
Работа в c# с DateTime - получение набора дат в текущем году
GZip - архивация (упаковка) файлов на c#
DateTime - пример определения даты и времени
Время выполнения операций c#
Паттерн (шаблон) SingleTon средствами c#
Обобщенная коллекция Dictionary
c# структуры - не классы?! А что же это - struct VS class
Создание пользовательских событий на c#
Выборка файлов из директории и поддиректорий на c#
Делегаты и методы на c#
Запуск одного экземпляра приложения на c#
c# - Битовый флаг enum



Оценить статью:

Оценивая статью, Вы подсказываете нам насколько данная информация стала полезной именно для Вас. Мы ожидаем, прежде всего, оценку доступности материала для понимания и простоты его изложения. Дополнительные комментари, вопросы, дополнения и замечания Вы можете указать на странице От Вас

Частичное, или полное копирование материала данной статьи возможно лишь при размещении ссылки на данную страницу.


            
        




Имя:  


Текст комментариев (не больше 600 знаков):  
введите не более 600 знаков



Введите символы с картинки:
Капча имеет "срок годности". Поэтому, если необходимо обновите страницу.



Сантехник срочно
c# курс Гудок   курс по ASP.NET Гудок   курс по ADO.NET Гудок   курс по XML txt Гудок   курс по рефлексии и многопоточности Гудок