Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Работа со строками.

Строка - это один из наиболее важных типов данных при программировании. Вам уже известен подход языков C/C++ для работы с ними. Сейчас настало время разобрать подход к данной проблеме в C#.Во многих языках программирования строка – это массив символов, но в C# строки являются объектами типа данных string.

Способы создания объектов string

Самым простым способом создания объектов типа string является использование строкового литерала. Например:

string str = "Это простая тестовая строка";

Вторым способом является создание объекта на основании массива типа char.Например:

char [] ar ={'F','i','r','e'};
string str = new string(ar);

Обобщим всё вышесказанное.

using System;
class Sample
{
	static void Main() 
	{
		char [] ar ={'C','#'};
		string str = new string(ar);
		string str2 = " forever !!!";
		Console.Write(str+str2+"\n");
		
		Console.ReadLine();
	}
}

Естественно на экране вы увидите надпись C# forever !!! .

Массивы строк

Строки могут быть значениями элементов массива. Например:

using System;
class Sample
{
	static void Main() 
	{
		string [] str={" Smoke "," On "," The "," Water "};
		for(int i =0; i<str.Length;i++){
			Console.WriteLine(str[i]);
		}
		str[0]=" Fire ";
		str[1]=" In ";
		str[2]=" The ";
		str[3]=" Sky ";
		Console.WriteLine("\n\n\n");
		for(int i =0; i<str.Length;i++){
			Console.WriteLine(str[i]);
		}
		Console.Read();		

	}
}

Операции со строками

В классе string сосредоточено достаточное количество методов по работе со строками. Они схожи с уже изученными вами методами класса CString библиотеки MFC. Например:

int CompareTo(
   string strB
);

Сравнивает две строки между собой (строку, через объект которой вызывается данный метод и строку, содержащуюся в объекте strB). Возвращает 0 если строки равны, значение меньше нуля, если содержимое вызывающей строки меньше значения в strB, значение больше нуля, если содержимое вызывающей строки больше значения в strB. Знакомо ли не правда? Да это ж функция strcmp из библиотеки <string.h>! Приведем пример использования строковых методов:

using System;
class Sample
{
	static void Main() 
	{
		string str =" This ";
		string str2 = " is ";
		string str3 = " sample ";
		string str4 = " is ";
		
		Console.WriteLine("Длина строки str = {0}",str.Length);
		if(str == str4)
			Console.WriteLine("Строки str и str4 равны");
		else
			Console.WriteLine("Строки str и str4 не равны");
	
		if(str2!=str4)
			Console.WriteLine("Строки str и str4 не равны");
		else
			Console.WriteLine("Строки str и str4  равны");
	
		string tempcopy = string.Copy(str);
		Console.WriteLine(tempcopy);
		
		string text = "Sunny one two one";
		Console.WriteLine(" Индекс первого вхождения слова one = {0} ",text.IndexOf("one"));
		Console.WriteLine(" Индекс последнего вхождения слова one = {0} ",text.LastIndexOf("one"));

		
		string res= "Start "+text+" !!!";
		Console.WriteLine(res);
		int r = str3.CompareTo(" sample ");
		Console.WriteLine(r);	
		Console.Read();
	}
}

Подробности использования методов приведенных в примере смотрите в MSDN. Для доступа к конкретным элементам строки используется оператор []. У него есть один минус - он даёт доступ только на чтение.Например:

		string str ="This";
		Console.WriteLine(str[0]);
		// Строка ниже приводит к ошибке на этапе компиляции
		str[0]='X'; // ОШИБКА !!! Доступ только на чтении 
		Console.Read();
		Console.WriteLine(str[0]);
		str="Test"; // А так можно !!!

То есть мы не можем модифицировать уже существующую строку, например, заменить ряд символов в ней. Для изменения существующей строки необходимо создавать новый объект. Например, для получения части строки можно использовать метод Substring . Например:

		string str ="Kind Of Magic";
		string t = str.Substring(0,3);		
		Console.WriteLine(t);
		Console.Read();


 
 
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru