KnigaRead.com/
KnigaRead.com » Компьютеры и Интернет » Программирование » Герберт Шилдт - C# 4.0: полное руководство

Герберт Шилдт - C# 4.0: полное руководство

На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Герберт Шилдт, "C# 4.0: полное руководство" бесплатно, без регистрации.
Перейти на страницу:

В приведенном ниже примере программы демонстрируется несколько операций со строками.


// Некоторые операции со строками.

using System;

using System.Globalization;

class StrOps {

  static void Main() {

    string strl = "Программировать в .NET лучше всего на С#.";

    string str2 = "Программировать в .NET лучше всего на С#.";

    string str3 = "Строки в C# весьма эффективны.";

    string strUp, strLow;

    int result, idx;


    Console.WriteLine("strl: " + strl);

    Console.WriteLine("Длина строки strl: " + strl.Length);


    // Создать варианты строки strl, набранные

    // прописными и строчными буквами.

    strLow = strl.ToLower(CultureInfo.CurrentCulture);

    strUp = strl.ToUpper (CultureInfo.CurrentCulture);


    Console.WriteLine("Вариант строки strl, " +

          "набранный строчными буквами:n " + strLow);

    Console.WriteLine("Вариант строки strl, " +

          "набранный прописными буквами:n " + strUp);


    Console.WriteLine();


    // Вывести строку strl посимвольно.

    Console.WriteLine("Вывод строки strl посимвольно.");

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

      Console.Write(strl[i]);


    Console.WriteLine("n");


    // Сравнить строки способом порядкового сравнения,

    if (strl == str2)

      Console.WriteLine("strl == str2");

    else

      Console.WriteLine("strl != str2");


    if (strl == str3)

      Console.WriteLine("strl == str3");

    else

      Console.WriteLine("strl != str3");


    // Сравнить строки с учетом культурной среды.

    result = string.Compare(str3, strl, StringComparison.CurrentCulture) ;

    if(result == 0)

      Console.WriteLine("Строки strl и str3 равны");

    else

      if (result < 0)

        Console.WriteLine("Строка strl-меньше строки str3");

      else

        Console.WriteLine("Строка strl больше строки str3");


    Console.WriteLine();


    // Присвоить новую строку переменной str2.

    str2 = "Один Два Три Один";


    // Поиск подстроки.

    idx = str2.IndexOf("Один", StringComparison.Ordinal);

    Console.WriteLine("Индекс первого вхождения подстроки <Один>: " + idx);


    idx = str2.LastIndexOf("Один", StringComparison.Ordinal);

    Console.WriteLine("Индекс последнего вхождения подстроки <0дин>: " + idx) ;

  }

}


При выполнении этой программы получается следующий результат.


strl: Программировать в .NET лучше всего на С#.

Длина строки str1: 41

Вариант строки str1, набранный строчными буквами:

       программировать в .net лучше всего на с#.

Вариант строки str1, набранный прописными буквами:

       программировать в .net лучше всего на с#.


Вывод строки str1 посимвольно.

Программировать в .NET лучше всего на С#.


str1 == str2

str1 != str3

Строка str1 больше строки str3


Индекс первого вхождения подстроки <0дин>: О

Индекс последнего вхождения подстроки <0дин>: 13


Прежде чем читать дальше,    обратите внимание    на то, что метод Compare() вызывается следующим образом.


result = string.Compare(strl, str3, StringComparison.CurrentCulture);


Как пояснялось ранее, метод Compare() объявляется как static, и поэтому он вызывается по имени, а не по экземпляру своего класса.

С помощью оператора + можно сцепить (т.е. объединить вместе) две строки. Например, в следующем фрагменте кода:


string str1 = "Один";

string str2 = "Два";

string str3 = "Три";

string  str4 = str1 + str2 + str3;


переменная str4 инициализируется строкой "ОдинДваТри".

И еще одно замечание: ключевое слово string является псевдонимом класса System. String, определенного в библиотеке классов для среды .NET Framework, т.е. оно устанавливает прямое соответствие с этим классом. Следовательно, поля и методы, определяемые типом string, относятся непосредственно к классу System.String, в который входят и многие другие компоненты. Подробнее о классе System.String речь пойдет в части II этой книги.


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

Аналогично данным любого другого типа, строки могут быть организованы в массивы. Ниже приведен соответствующий пример.


// Продемонстрировать массивы строк.

using System;

class StringArrays {

  static void Main() {

    string[] str = { "Это", "очень", "простой", "тест." };


    Console.WriteLine("Исходный массив: ");

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

      Console.Write(str[i] + " ");


    Console.WriteLine("n");


    // Изменить строку.

    str[1] = "тоже";

    str[3] = "до предела тест!";

    Console.WriteLine("Видоизмененный массив: ");

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

      Console.Write(str[i] + " ");

  }

}


Вот какой результат дает выполнение приведенного выше кода.


Исходный массив:

Это очень простой тест.

Видоизмененный массив:

Это тоже простой до предела тест!


Рассмотрим более интересный пример. В приведенной ниже программе целое число выводится словами. Например, число 19 выводится словами "один девять".


// Вывести отдельные цифры целого числа словами, using System;

class ConvertDigitsToWords {

  static void Main() {

    int num;

    int nextdigit;

    int numdigits;

    int[] n = new int[20];

    string[] digits = { "нуль", "один", "два",

       "три", "четыре", "пять",

       "шесть", "семь", "восемь",

       "девять" };


    num =1908;

    Console.WriteLine("Число: " + num);


    Console.Write("Число словами: ");

    nextdigit = 0; numdigits = 0;


    // Получить отдельные цифры и сохранить их в массиве п.

    // Эти цифры сохраняются в обратном порядке,

    do {

      nextdigit = num % 10;

      n[numdigits] = nextdigit;

      numdigits++;

      num = num /10;

    } while(num > 0);

    numdigits--;


    // Вывести полученные слова.

    for( ; numdigits >= 0; numdigits--)

      Console.Write(digits[n[numdigits]] + " ");


    Console.WriteLine() ;

  }

}


Выполнение этой программы приводит к следующему результату.


Число: 1908

Число словами: один девять нуль восемь


В данной программе использован массив строк digits для хранения словесных обозначений цифр от 0 до 9. По ходу выполнения программы целое число преобразуется в слова. Для этого сначала получаются отдельные цифры числа, а затем они сохраняются в обратном порядке следования в массиве n типа int. После этого выполняется циклический опрос массива n в обратном порядке. При этом каждое целое значение из массива n служит в качестве индекса, указывающего на слова, соответствующие полученным цифрам числа и выводимые как строки.

Перейти на страницу:
Прокомментировать
Подтвердите что вы не робот:*