Главная arrow Язык программирования C# arrow C# Полное руководство Герберт Шилдт arrow Обращение со строками C# Полное руководство Герберт Шилдт

Обращение со строками C# Полное руководство Герберт Шилдт

Класс типа string содержит ряд методов для обращения со строками. Некоторые из этих методов перечислены в табл. 7.1. К типу string относится также свойство Length, содержащее длину строки.
Таблица 7.1. Некоторые общеупотребительные методы обращения со строками

Метод

Описание

static string Copy(string str)

Возвращает копию строки str

int CompareTo(string str)

Возвращает отрицательное значение, если вызывающая строка меньше строки str; положительное значение, если вызывающая строка больше строки str; и нуль, если сравниваемые строки равны

int IndexOf(string str)

Осуществляет поиск в вызывающей строке подстроки str. Возвращает индекс первого вхождения искомой под­строки или -1, если она не обнаружена

int LastlndexOf(string str)

Осуществляет поиск в вызывающей строке подстроки str. Возвращает индекс последнего вхождения искомой подстроки или -1, если она не обнаружена

string ToLowerO

Возвращает вариант вызывающей строки, набранный строчными буквами

string ToUpperO

Возвращает вариант вызывающей строки, набранный про­писными буквами

Отдельный символ выбирается из строки с помощью индекса, как в приведенном ниже фрагменте кода.
   string str = "тест";
   Console.WriteLine(str[0]);

В этом фрагменте кода выводится символ "т", который является первым в строке "тест". Как и в массивах, индексирование строк начинается с нуля. Следует, однако, иметь в виду, что с помощью индекса нельзя присвоить новое значение символу в строке. Индекс может служить только для выборки символа из строки.
Для проверки двух строк на равенство служит оператор ==. Как правило, если оператор == применяется к ссылкам на объект, то он определяет, являются ли они ссылками на один и тот же объект. Совсем иначе обстоит дело с объектами типа string. Когда оператор == применяется к ссылкам на две строки, он сравнивает содержимое этих строк. Это же относится и к оператору ! =. При сравнении объектов типа string сравнивается содержимое строк. А для других видов сравнения строк приходится пользоваться методом CompareTo ().
В приведенном ниже примере программы демонстрируется несколько операций со строками.

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

using System;

class StrOps {
   static void Main() {
      string str1 = "Программировать в .NET лучше всего на С#.";
      string str2 = string.Copy(strl);
      string str3 = "Строки в C# весьма эффективны.";
      string strUp, strLow;
      int result, idx;

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

      // Создать варианты строки strl, набранные
      // прописными и строчными буквами.
      strLow = str1.ToLower();
      strUp = str1.ToUpper ();
      Console.WriteLine("Вариант строки strl, " + "набранный строчными буквами:\n " + strLow);
      Console.WriteLine("Вариант строки strl, " + "набранный прописными буквами:\n " + strUp);

      Console.WriteLine();

      // Вывести строку strl посимвольно.
      Console.WriteLine("Вывод строки str1 посимвольно.");
      for (int i=0; i < str1.Length; i++)
         Console.Write(strl[i]);

      Console.WriteLine("\n");
      // Сравнить строки, if(str1 == str2)
         Console.WriteLine ("str1 == str2");
      else
         Console.WriteLine("str1 != str2");
      if(str1 == str3)
         Console.WriteLine("str1 == str3");
      else
         Console.WriteLine("str1 != str3");

      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();

      // Присвоить новую строку переменной str2.
      str2 = "Один Два Три Один" ;

      // Поиск строки.
      idx = str2.IndexOf("Один");
      Console.WriteLine ("Индекс первого вхождения подстроки <Один>: " + idx);
      idx = str2.LastlndexOf("Один");
      Console.WriteLine("Индекс последнего вхождения подстроки <Один>: " + idx);
   }
}


При выполнении этой программы получается следующий результат:
   str1: Программировать в .NET лучше всего на С#.
   Длина строки str1: 41
   Вариант строки str1, набранный строчными буквами: программировать в .net лучше всего на с#.
   Вариант строки str1, набранный прописными буквами: программировать в .net лучше всего на с#.
   Вывод строки strl посимвольно.
   Программировать в .NET лучше всего на С#.
   str1 == str2
   str1 != str3
   str1 больше str3
   Индекс первого вхождения подстроки <Один>: 0
   Индекс последнего вхождения подстроки <Один>: 13
С помощью оператора + можно сцепить (т.е. объединить вместе) две строки. Например, в следующем фрагменте кода:
   string str1 = "Один";
   string str2 = "Два";
   string str3 = "Три";
   string str4 = strl + str2 + str3;

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