09 — Тип string

Тип string


Содержание



1. Какие характерные особенности типа string в языке C#?

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

Пример строки, которая в C# есть объектом:

"This is a text"

 


2. Как описать переменную с именем s типа string?
string s;

 


3. Как в переменную типа string занести значение строки?

Для этого нужно использовать оператор присваивания ‘=‘.

Вариант 1. Присваивание после описания.

string s; // описание переменной
s = "This is a text"; // присваивание значения текста

Вариант 2. Присваивание во время описания (начальная инициализация).

string s = "This is a text"; // начальная инициализация

Вариант 3. Использование метода Copy().

s = string.Copy("This is a text"); // s = "This is a text"

 


4. Как определить, равны ли две строки типа string между собой?

Две строки можно сравнивать обычным оператором сравнения «==«.

Фрагмент кода, который определяет равенство (неравенство) двух строк:

string s1 = "Hello!";
string s2 = "Hello!";
bool f_equal;
if (s1 == s2)
    f_equal = true;
else
    f_equal = false;

 


5. Как сравнить две строки типа string в лексикографическом порядке?

В этом случае можно использовать метод CompareTo(). Метод возвращает -1, 0 или 1.

В приведенном примере видно результат работы метода.

string s1 = "abcd";
string s2 = "abcde";
int res;
res = s1.CompareTo(s2); // res = -1, (s1<s2)
res = s2.CompareTo(s1); // res = 1, (s2>s1)
s2 = s1; // строки равны
res = s1.CompareTo(s2); // res = 0, (s1==s2)
res = s2.CompareTo(s1); // res = 0

 


6. Как соединить две строки типа string?

Способ №1 — функция Concat().

string s1 = "Hello ";
string s2 = "world!";
string s3;
s3 = string.Concat(s1, s2); // s3 = "Hello world!"

Способ № 2 — использование оператора «+».

string s1 = "Hello ";
string s2 = "world!";
string s3;
s3 = s1 + s2; // s3 = "Hello world!"

 


7. Как скопировать одну строку типа string в другую?

Способ № 1 — оператор присваивания.

string s1 = "My string";
string s2;
s2 = s1; // s2 = "My string"

Способ №2 — метод Copy().

string s1 = "My string";
string s2;
s2 = string.Copy(s1); // s2 = "My string"

 


8. Вставка подстроки начиная из заданного индекса. Функция Insert()

Для вставки подстроки используется функция Insert(). Функция принимает два параметра. Первый параметр – позиция индекса в строке, из которой делается вставка (начинается с 0). Второй параметр – текст самой строки.

string s1 = "ABEF";
string s2;
s2 = s1.Insert(2, "CD"); // s2 = "ABCDEF"
s1 = "123";
s2 = s1.Insert(0, "555"); // s2 = "555123"

// Ошибка!
// Заданный аргумент находится за пределами допустимых значений.
// s2 = s1.Insert(20, "33");

Если задать неверный индекс за пределами диапазона, то будет сгенерирована исключительная ситуация.

 


9. Поиск и возвращение индекса первого вхождения подстроки в данную строку.

Реализуется функцией IndexOf(). Если найдена подстрока в строке, то функция возвращает позицию первого вхождения. В другом случае функция возвращает -1.

Функция имеет перегруженные варианты реализации.

string s = "Hello world!";
int index;
index = s.IndexOf("wor"); // index = 6
index = s.IndexOf("abc"); // index = -1

// другой вариант функции IndexOf()
index = s.IndexOf("wor", 7); // index = -1 - поиск из позиции 7
index = s.IndexOf("wor", 0); // index = 6 - поиск из позиции 0

// поиск идет от заданного индекса (3)
// и проверяется заданное количество символов (5)
index = s.IndexOf("wo", 3, 5); // index = 6

 


10. Поиск и возвращение индекса последнего вхождения подстроки в данную строку функцией LastIndexOf().

Функция имеет несколько перегруженных реализаций. Нумерация индекса последнего вхождения начинается с 0.

string s = "bestprog.net";
int index;
index = s.LastIndexOf("prog"); // index = 4

 


11. Как определить длину строки типа string?

Для определения длины строки (количество символов) типа string используется свойство Length.

string s = "bestprog.net";
int len;
len = s.Length; // len = 12
s = ""; // len = 0

 


12. Создание строки заданной ширины. Демонстрация функций PadLeft() и PadRight().

Функции PadLeft() и PadRight() используются для создания форматированной строки, в которой позиции справа или слева заполняются пробелами.

string s1 = "abc";
string s2;
s2 = s1.PadLeft(5); // s2 = " abc"
s2 = s1.PadLeft(2); // s2 = "abc"
s2 = s1.PadLeft(9); // s2 = "     abc"

// ошибка "Non-negative number required."
// "Нужно неотъемлемое число
// s2 = s1.PadLeft(-2);

s2 = s1.PadRight(2); // s2 = "abc"
s2 = s1.PadRight(8); // s2 = "abc     "

 


13. Удаление заданного количества символов из строки функцией Remove().

Функция Remove() имеет две реализации. В первой реализации функция имеет два параметра. Во второй – один параметр.

Пример 1. Реализация функции Remove() с двумя параметрами.

string s1 = "0123456789";
string s2;
s2 = s1.Remove(3, 2); // s2 = "01256789"

В данном примере функция Remove() получает два параметра. Первый параметр – позиция, из которой делается удаление. Второй параметр – количество удаленных символов.

Пример 2. Реализация с одним параметром.

string s1 = "0123456789";
string s2;
s2 = s1.Remove(4); // s2 = "0123"

В этом примере функция получает один параметр. Этот параметр определяет позицию из которой будет осуществлено удаление символов до конца строки.

Если указать

s2 = s1.Remove(0);

то будет удалена вся строка.

Пример 3. Если нужно удалить последний символ в строке, то нужно написать такой код.

string s1 = "This is a text!";
string s2;
int len;
len = s1.Length;
s2 = s1.Remove(len-1); // s2 = "This is a text"

 


14. Замена символов в строке. Функция Replace().

Функция Replace() имеет два варианта реализации.

Первый вариант оперирует строками типа string. Второй вариант оперирует типом char.

Пример 1. Использование функции Replace() для замены одной строки на другую.

string s1 = "0123456789";
string s2;
s2 = s1.Replace("012", "ABC"); // s2 = "ABC3456789"

Пример 2. Использование функции Replace() для замены символа ‘0’ на символ ‘A’.

string s1 = "0123456789";
string s2;
s2 = s1.Replace('0', 'A'); // s2 = "A123456789"

 


15. Как в строке выделить подстроку. Функция Substring()

Функция Substring() имеет две реализации.

Вариант 1. Выделение подстроки с заданной позиции до конца строки.

string s1 = "Automobile";
string s2;
s2 = s1.Substring(4); // s2 = "mobile

Вариант 2. Выделение подстроки с заданной позиции (параметр 1) в заданном количестве символов (параметр 2).

string s1 = "Automobile";
string s2;
s2 = s1.Substring(0, 4); // s2 = "Auto"

 


16. Преобразование числовой строки типа string в целое число. Функция Parse().

Функция Parse() разрешает переводить строку, которая состоит из цифр, в целое число. Такая функция полезна если нужно получить число, которое было введено из клавиатуры и получено в виде строки. Например, ввод из элемента управления типа TextBox.

// string => int
string s = "389";
int i;
i = int.Parse(s);
i = int.Parse("-29"); // i = -29

 


17. Преобразование целого числа в строку. Функция ToString().

Функция ToString() переводит целое число в его строчное представление. Например, такая функция полезная, если нужно вывести целое число на форму в элементе управления Label.

// int => string
string s;
int i;
i = 230;
s = i.ToString(); // s = "230"

 


18. Преобразование строки string в число с плавающей запятой (вещественное число).

При превращении строки в соответствующее вещественное число, важно учитывать кодировку символов.

Если у вас установлена операционная система с кирилличной кодировкой и настроены соответствующие региональные стандарты, тогда символ ‘.’ может быть заменен на символ ‘,’. Это связано с тем, что в странах, которые используют кириллицу как разделитель между целой и дробной частями, есть символ ‘,’ (запятая). А в англоязычных странах разделителем целой и дробовой частей есть символ ‘.’ (точка).

Символ-разделитель целой и дробной частей можно изменить в региональных настройках Windows.

Поэтому, в ОС Windows с кириллическим кодированием по умолчанию, следующий код вызовет исключительную ситуацию FormatException с сообщением: «Input string was not in a correct format» (Исходная строка имеет неверный формат).

double x;
string s;
s = "9.83";
// генерируется исключительная ситуация FormatException
// с сообщением "Input string was not in a correct format."
x = double.Parse(s);

Ниже приведен правильный вариант для ОС с кирилличной кодировкой:

// string => double
double x;
string s;
s = "9,83";
x = double.Parse(s);

 


19. Преобразование числа с плавающей запятой в string.
// double => string
double x;
string s;
x = -39.038;
s = x.ToString(); // s = "-39,038"

 


20. Перевод значения переменной логического типа bool в строку string
// string => bool
bool b;
string s;
s = "true";
b = bool.Parse(s); // b = True

Если ввести неправильное значение в строку s, то генерируется исключительная ситуация с сообщением:

"String was not recognized as a valid Boolean"