Energy
education

сайт для тех, кто хочет изучать энергетику

14. Строки

В C# вы можете использовать строки как массивы символов, однако, более распространенной практикой является использование ключевого слова string для определения строковой переменной. Ключевое слово string это псевдоним для класса System.String.

Создание объекта String

Вы можете создать объект String используя один из следующих методов:

  • Назначая строковый литерал в строковую переменную
  • Используя консткуктор класса String
  • Используя строковый оператор конкатенации (+)
  • Путем извлечения свойства или вызова метода, который возвращает строку
  • Вызывая метод форматирования для преобразования значения или объекта в его строковое представление

Следующий пример демонстрирует это:

    
using System;
namespace StringApplication
{
    class Program
    {
        static void Main(string[] args)
        {
           //из строкового литерала и конкатенации
            string fname, lname;
            fname = "Иван";
            lname = "Петров";
            string fullname = fname + lname;
            Console.WriteLine("Полное имя: {0}", fullname);
            //Используя консткуктор класса String
            char[] letters = { 'П', 'р', 'и', 'в','е','т' };
            string greetings = new string(letters);
            Console.WriteLine("Приветствие: {0}", greetings);
            //вызов метода, который возвращает строку
            string[] sarray = { "Привет", "от", "обучающей", "программы" };
            string message = String.Join(" ", sarray);
            Console.WriteLine("Сообщение: {0}", message);
            //formatting method to convert a value 
            DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
            string chat = String.Format("Сообщение отправлено в {0:t} {0:D}", 
            waiting);
            Console.WriteLine("Сообщение: {0}", chat);
            Console.ReadKey() ;
        }
    }
}
    

Если приведенный выше код скомпилировать и выполнить, это приведет к следующему результату:

    
Полное имя: Иван Петров
Приветствие: Привет
Сообщение: Привет от обучающей программы
Сообщение: Сообщение отправлено в 5:58 PM Среда, Октябрь 10, 2012
    

Свойства класса String

Класс String имеет следующие два свойства:

НомерИмя и описание свойства
1Chars
Получает объект Char с указанной позиции в текущем объекте String.
2Length
Возвращает число символов в текущем объекте String.

Методы класса String

Класс String имеет множество методов, которые полезны при работе со строковыми объектами. В следующей таблице приведены некоторые из наиболее широко используемых методов:

НомерИмя и описание метода
1 public static int Compare( string strA, string strB )
Сравнивает два указанных объекта String и возвращает целое число, которое показывает их относительное положение в порядке сортировки.
2 public static int Compare( string strA, string strB, bool ignoreCase )
Сравнивает два заданных строковых объекта и возвращает целое число, которое показывает их относительное положение в порядке сортировки. Тем не менее, он игнорирует случаи, когда логический параметр это истина.
3 public static string Concat( string str0, string str1 )
Объединяет два стороковых объекта.
4 public static string Concat( string str0, string str1, string str2 )
Объединяет три стороковых объекта.
5 public static string Concat( string str0, string str1, string str2, string str3 )
Объединяет четыре стороковых объекта.
6 public bool Contains( string value )
Возвращает значение, указывающее, содержит ли данная строка заданный объект типа String.
7 public static string Copy( string str )
Создает новый объект String с значением исходной строки.
8 public void CopyTo( int sourceIndex, char[] destination, int destinationIndex, int count )
Копирует заданное число знаков начиная с указанной позиции в этом экземпляре до указанной позиции в массиве знаков Юникода.
9 public bool EndsWith( string value )
Определяет, совпадает ли конец данного экземпляра строки с указанной строкой.
10 public bool Equals( string value )
Определяет равны ли значения этого экземпляра и указанного объекта String.
11 public static bool Equals( string a, string b )
Определяет, равны ли значения двух объектов String.
12 public static string Format( string format, Object arg0 )
Заменяет один или более элементов формата в указанной строке строковым представлением указанного объекта.
13 public int IndexOf( char value )
Возвращает индекс с отсчетом от нуля первого вхождения указанного символа Юникода в данной строке.
14 public int IndexOf( string value )
Возвращает индекс с отсчетом от нуля первого вхождения значения указанной строки в данном экземпляре.
15 public int IndexOf( char value, int startIndex )
Возвращает индекс с отсчетом от нуля первого вхождения указанного символа Юникода в данной строке. Поиск начинается с указанной позиции знака.
16 public int IndexOf( string value, int startIndex )
Возвращает индекс с отсчетом от нуля первого вхождения значения указанной строки в данном экземпляре. Поиск начинается с указанной позиции знака.
17 public int IndexOfAny( char[] anyOf )
Возвращает индекс с отсчетом от нуля первого обнаруженного в данном экземпляре символа из указанного массива символов Юникода.
18 public int IndexOfAny( char[] anyOf, int startIndex )
Возвращает индекс с отсчетом от нуля первого обнаруженного в данном экземпляре символа из указанного массива символов Юникода. Поиск начинается с указанной позиции знака.
19 public string Insert( int startIndex, string value )
Возвращает новую строку, в которой указанная строка вставляется на указанной позиции индекса в данном экземпляре.
20 public static bool IsNullOrEmpty( string value )
Указывает, действительно ли указанная строка является строкой null или Empty.
21 public static string Join( string separator, params string[] value )
Сцепляет элементы указанного массива или элементы коллекции, помещая между ними заданный разделитель.
22 public static string Join( string separator, string[] value, int startIndex, int count )
Сцепляет указанные элементы массива строк, помещая между ними заданный разделитель.
23 public int LastIndexOf( char value )
Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанного символа Юникода в пределах данного экземпляра.
24 public int LastIndexOf( string value )
Возвращает позицию индекса с отсчетом от нуля последнего вхождения указанной строки в данном экземпляре.
25 public string Remove( int startIndex )
Возвращает новую строку, в которой были удалены все символы, начиная с указанной позиции и до конца в текущем экземпляре.
26 public string Remove( int startIndex, int count )
Возвращает новую строку, в которой было удалено указанное число символов в указанной позиции.
27 public string Replace( char oldChar, char newChar )
Возвращает новую строку, в которой все вхождения заданного знака Юникода в текущем экземпляре заменены другим заданным знаком Юникода.
28 public string Replace( string oldValue, string newValue )
Возвращает новую строку, в которой все вхождения заданной строки в текущем экземпляре заменены другой заданной строкой.
29 public string[] Split( params char[] separator )
Возвращает строковый массив, содержащий подстроки данного экземпляра, разделенные элементами заданного массива знаков Юникода.
30 public string[] Split( char[] separator, int count )
Возвращает строковый массив, содержащий подстроки данного экземпляра, разделенные элементами заданного массива знаков Юникода. Параметр указывает максимальное число возвращаемых подстрок.
31 public bool StartsWith( string value )
Определяет, совпадает ли начало данного экземпляра строки с указанной строкой.
32public char[] ToCharArray()
Копирует знаки данного экземпляра в массив знаков Юникода.
33 public char[] ToCharArray( int startIndex, int length )
Копирует знаки из указанной подстроки данного экземпляра в массив знаков Юникода.
34public string ToLower()
Возвращает копию данной строки, переведенную в нижний регистр.
35public string ToUpper()
Возвращает копию этой строки, переведенную в верхний регистр.
36public string Trim()
Удаляет все начальные и конечные знаки пробела из текущего объекта String.

Приведенный выше перечень методов не является исчерпывающим, пожалуйста, посетите библиотеку MSDN для получения полного списка методов и конструкторов класса String.

Пример

Следующий пример демонстрирует некоторые из упомянутых выше методов:

Сравнение строк:

    
using System;
namespace StringApplication
{
   class StringProg
   {
      static void Main(string[] args)
      {
         string str1 = "Это тест";
         string str2 = "Это текст";
         if (String.Compare(str1, str2) == 0)
         {
            Console.WriteLine(str1 + " и " + str2 +  " равны.");
         }
         else
         {
            Console.WriteLine(str1 + " и " + str2 + " не равны.");
         }
         Console.ReadKey() ;
      }
   }
}
    

Если приведенный выше код скомпилировать и выполнить, это приведет к следующему результату:

    
Это тест и Это текст не равны.
    

Строка содержит строку:

    
using System;
namespace StringApplication
{
   class StringProg
   {
      static void Main(string[] args)
      {
         string str = "Это тест";
         if (str.Contains("тест"))
         {
            Console.WriteLine("Последовательность 'тест' найдена.");
         }
         Console.ReadKey() ;
      }
   }
}
    

Если приведенный выше код скомпилировать и выполнить, это приведет к следующему результату:

    
Последовательность 'тест' найдена.
    

Получение подстроки:

    
using System;
namespace StringApplication
{
   class StringProg
   {
      static void Main(string[] args)
      {
         string str = "Last night I dreamt of San Pedro";
         Console.WriteLine(str);
         string substr = str.Substring(23);
         Console.WriteLine(substr);
      }
      Console.ReadKey() ;
   }
}
    

Если приведенный выше код скомпилировать и выполнить, это приведет к следующему результату:

    
San Pedro
    

Присоединение строк:

    
using System;
namespace StringApplication
{
   class StringProg
   {
      static void Main(string[] args)
      {
         string[] starray = new string[]{"Down the way nights are dark",
         "And the sun shines daily on the mountain top",
         "I took a trip on a sailing ship",
         "And when I reached Jamaica",
         "I made a stop"};
         string str = String.Join("\n", starray);
         Console.WriteLine(str);
      }
      Console.ReadKey() ;
   }
}
    

Если приведенный выше код скомпилировать и выполнить, это приведет к следующему результату:

    
Down the way nights are dark
And the sun shines daily on the mountain top
I took a trip on a sailing ship
And when I reached Jamaica
I made a stop