Суббота, 23.11.2024, 02:48
Приветствую Вас Гость | RSS
Меню сайта
Категории раздела
База языка C# [3]
В данном разделе будут статьи по базовым понятиям языка C#
Основы языка С# [22]
Раздел продолжает рассматривать основы языка C#
Задачи [2]
примеры решения задач
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Поиск
Главная » Статьи » C# » Основы языка С#

Строковый тип string. Продолжение

Продолжение первой части статьи Строковый тип string.

Рассмотренные примеры определяют область применения типа string – это поиск, сравнение, извлечение информации из строки. А вот если нужно изменять строку, то лучше пользоваться классом StringBuilder, который мы рассмотрим позже.
Вернемся к методам класса string и рассмотрим их на следующем примере:

 

static void Main()

{

    string str1 = "Первая строка";

    string str2 = string.Copy(str1);

    string str3 = "Вторая строка";

    string str4 = "ВТОРАЯ строка";

    string strUp, strLow;

    int result, idx;

    Console.WriteLine("str1: {0}", str1);

    Console.WriteLine("Длина строки str1: {0}", str1.Length);

    Console.WriteLine("str2: {0}", str2);

    Console.WriteLine("Длина строки str2: {0}", str2.Length);

    Console.WriteLine("str3: {0}", str3);

    Console.WriteLine("Длина строки str3: {0}", str3.Length);

    Console.WriteLine("str4: {0}", str4);

    Console.WriteLine("Длина строки str4: {0}", str4.Length);

    Console.WriteLine();

    // создаем прописную и строчную версии строки str1.

    strLow = str1.ToLower();

    strUp = str1.ToUpper();

    Console.WriteLine("Строчная версия строки str1: {0}", strLow);

    Console.WriteLine("Прописная версия строки str1: {0}", strUp);

    Console.WriteLine();

    // Сравниваем строки

    result = str1.CompareTo(str3);

    if (result == 0)

    {

        Console.WriteLine("str1 и str3 равны.");

    }

    else

    {

        if (result < 0)

        {

            Console.WriteLine("str1 меньше, чем str3");

        }

        else

        {

            Console.WriteLine("str1 больше, чем str3");

        }

    }

    Console.WriteLine();

    //сравниваем строки без учета регистра

    result = String.Compare(str3, str4, true);

    if (result == 0)

    {

        Console.WriteLine("str3 и str4 равны без учета регистра.");

    }

    else

    {

        Console.WriteLine("str3 и str4 не равны без учета регистра.");

    }

    Console.WriteLine();

    //сравниваем части строк

    result = String.Compare(str1, 4, str2, 4, 2);

    if (result == 0)

    {

        Console.WriteLine("часть str1 и str2 равны");

    }

    else

    {

        Console.WriteLine("часть str1 и str2 неравны");

    }

    Console.WriteLine();

    // Поиск строк

    idx = str2.IndexOf("строка");

    Console.WriteLine("Индекс первого вхождения подстроки \"строка\" в str2: {0}", idx);

    idx = str2.LastIndexOf("о");

    Console.WriteLine("Индекс последнего вхождения символа \'о\' в str2: {0}", idx);

    Console.WriteLine();

    //конкатенация – слияние строк

    string str = String.Concat(str1, str2, str3, str4);

    Console.WriteLine("Слияние строк: {0}", str);

    Console.WriteLine();

    //замена подстроки "строка" на пустую подстроку

    string newstr = str.Replace("строка", "");

    Console.WriteLine("Замена: {0}", newstr);

}

Результат работы программы:
str1: Первая строка
Длина строки str1: 13
str2: Первая строка
Длина строки str2: 13
str3: Вторая строка
Длина строки str3: 13
str4: ВТОРАЯ строка
Длина строки str1: 13
Строчная версия строки str1: первая строка
Прописная версия строки str1: ПЕРВАЯ СТРОКА
str1 больше, чем str3
str3 и str4 равны без учета регистра
часть str1 и str2 равны
Индекс первого вхождения подстроки «строка» в str2: 7
Индекс последнего вхождения символа 'o' в str2: 10
Слияние строк: Первая строкаПервая строкаВторая строкаВТОРАЯ строка
Замена: Первая Первая Вторая ВТОРАЯ

 

Очень важными методами обработки строк, являются методы разделения строки на элементы - Split и слияние массива строк в единую строку - Join.

 

static void Main()

{

    string poems = "тучки небесные вечные странники";

    char[] div = { ' ' }; //создаем массив разделителей

    // Разбиваем строку на части

    string[] parts = poems.Split(div);

    Console.WriteLine("Результат разбиения строки на части: ");

    for (int i = 0; i < parts.Length; i++)

    {

        Console.WriteLine(parts[i]);

    }

    // собираем эти части в одну строку, в качестве разделителя используем символ |

    string whole = String.Join(" | ", parts);

    Console.WriteLine("Результат сборки: ");

    Console.WriteLine(whole);

}

Результат работы программы:
Результат разбиения строки на части:
тучки
небесные
вечные
странники
Результат сборки:
тучки | небесные | вечные | странники

В общем случае строка может содержать и другие разделители:

static void Main()

{

    string poems = " тучки небесные, вечные странники...";

    char[] div = { ' ', ',', '.' }; //создаем массив разделителей

    // Разбиваем строку на части

    string[] parts = poems.Split(div); // 1

    Console.WriteLine("Результат разбиения строки на части: ");

    for (int i = 0; i < parts.Length; i++)

    {

        Console.WriteLine(parts[i]);

    }

    //собираем эти части в одну строку, в качестве разделителя используем символ |

    string whole = String.Join(" | ", parts);

    Console.WriteLine("Результат сборки: ");

    Console.WriteLine(whole);

}

Результат работы программы:
Результат разбиения строки на части:

тучки
небесные

вечные
странники



Результат сборки:
 | тучки | небесные | | вечные | странники | | |
В результате работы программы мы получили пустые слова. Это связано с особенностью работы метода Split, в котором полагается, что между двумя разделителями должно быть слово. Поэтому если два разделителя стоят рядом, то между ними стоит пустое слово.
Если необходимо, чтобы при разделении строки на слова пустые строки игнорировались, необходимо использовать перегруженную версию метода Split. Например, если заменить в предыдущем примере строку 1 на следующую команду

string[] parts = poems.Split(div, StringSplitOptions.RemoveEmptyEntries);

в которой параметр StringSplitOptions.RemoveEmptyEntries позволяет игнорировать незначащие разделители, то результат работы программы будет выглядеть следующим образом:
тучки | небесные | вечные | странники

 

 

Категория: Основы языка С# | Добавил: solowey (20.01.2016)
Просмотров: 167 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Вход на сайт