C# String

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

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

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

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

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

Пример

using System;

namespace StringApplication
{
    class Program
    {
        static void Main(string[] args)
        {
           // String, конкатенация строк
            string fname, lname;
            fname = "Rowan";
            lname = "Atkinson";

            string fullname = fname + lname;
            Console.WriteLine("Полное имя: {0}", fullname);

            // Используя конструктор string
            char[] letters = { 'H', 'e', 'l', 'l','o' };
            string greetings = new string(letters);
            Console.WriteLine("Приветствие: {0}", greetings);

            // Метод возвращает строку
            string[] sarray = { "Привет", "От", "Tutorials", "Point" };
            string message = String.Join(" ", sarray);
            Console.WriteLine("Сообщение: {0}", message);

            // Метод форматирования, используемый для преобразования значений
            DateTime waiting = new DateTime(2012, 10, 10, 17, 58, 1);
            string chat = String.Format("Сообщение отправлено в {0:t} {0:D}",
            ожидание);
            Console.WriteLine("Message: {0}", chat);
            Console.ReadKey() ;
        }
    }
}

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

Full Name: RowanAtkinson
Greetings: Hello
Message: Hello From Tutorials Point
Message: Message sent at 17:58 on Wednesday, 10 October 2012

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

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

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

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

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

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

         if (String.Compare(str1, str2) == 0)
         {
            Console.WriteLine(str1 + " and " + str2 +  " are equal.");
         }
         else
         {
            Console.WriteLine(str1 + " and " + str2 + " are not equal.");
         }
         Console.ReadKey() ;
      }
   }
}

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

This is test and This is text are not equal.

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

Пример

using System;

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

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

The sequence 'test' was found.

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

Пример

using System;
namespace StringApplication
{
        class StringProg
        {
                static void Main(string[] args)
                {
                        string str = "Прошлой ночью мне снился Сан-Педро";
                        Console.WriteLine(str);
                        string substr = str.Substring(23);
                        Console.WriteLine(substr);
                        Console.ReadKey() ;
                }
        }
}

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

Last night I dreamt of San Pedro
San Pedro

Строка подключения:

Пример

using System;

namespace StringApplication
{
   class StringProg
   {
      static void Main(string[] args)
      {
         string[] starray = new string[]{"Вниз по дороге ночи темны",
         "И солнце светит каждый день на вершине горы",
         "Я отправился в путешествие на парусном корабле",
         "И когда я добрался до Ямайки",
         "Я сделал остановку"};

         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
Другие расширения