Foreversoft.ru

IT Справочник
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

String си шарп

Обучение C#

Формула программиста

Работая с этим сайтом, Вы даете согласие на использование файлов Cookie.

Класс String для работы со строками

Инициализация строк

Для инициализации символьных строк используются строковые литералы, то есть последовательности символов, заключенные в двойные кавычки. Кроме символов строковый литерал может содержать Escape-последовательности – специальные символы, которые начинаются с обратного слеша ( ), после которого следует обозначение символа.
Перечень основных Escape-последовательностей приведен в таблице

Escape-последовательностьЗначение
aЗвонок (предупреждение)
bУдаление предыдущего символа
fПеревод страницы
nНовая строка
rВозврат каретки
tГоризонтальная табуляция
vВертикальная табуляция
Одиночная кавычка
«Двойная кавычка
\Обратный слеш
?Вопросительный знак
xhhhhСимвол Юникода в шестнадцатеричном формате, где hhhh – собственно код символа
uddddСимвол Юникода (dddd)

Escape-последовательности используются, например, для перевода строки или отступа в виде символа табуляции.
Если необходимо задать строку без Escape-последовательностей, то можно применить буквальный строковый литерал, обозначаемый префиксом @ , после которого размещается неизменяемая последовательность символов в двойных кавычках. Такой литерал может размещаться в коде на нескольких строчках, и это размещение сохранится при выводе.
Примеры инициализации объектов типа string .

Кроме того, при формировании строк очень часто используется перегруженный оператор + , который осуществляет слияние строк:

Класс string содержит ряд конструкторов для инициализации строк, которые позволяют сформировать строку из массива символов типа char или его части.
Также можно сформировать строку из последовательности одинаковых символов.

Основным свойством любой строки является свойство Length , которое позволяет получить количество символов в строке.

По сути строка представляет собой массив символов, обратиться к каждому из которых можно с использованием индекса этого элемента.

Кроме того, класс String обладает рядом методов, основные из которых будут рассмотрены ниже.

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

Метод Compare() является статическим методом класса String и позволяет посимвольно сравнить две строки или подстроки. Возвращаемое значение метода равно 0 в случае равенства строк. Пример использования этого метода:

Статический метод Copy() позволяет создать копию строки, указанной в качестве аргумента.
Для проверки, содержат ли строки одинаковые последовательности символов, может использоваться метод Equals() , имеющий как статический, так и нестатический вариант использования. Пример использования методов:

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

Для изменения регистра букв, используемых в строке, можно использовать методы ToUpper() и ToLower() , приводящие все буквы строки соответственно в верхнему или нижнему регистру.

Работа с подстрокой в строке

Для формирования подстроки может использоваться метод Substring() , который формирует подстроку начиная с заданной позиции или начиная с заданной позиции указанной длины.

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

  • Contains(подстрока) – проверяет, содержит ли данная строка подстроку, указанную в качестве аргумента, возвращает логическое значение true или false .
  • IndexOf(подстрока) – возвращает индекс первого вхождения подстроки в данную строку. Если вхождений нет, возвращается -1.
  • LastIndexOf(подстрока) – возвращает индекс последнего вхождения подстроки в данную строку. Если вхождений нет, возвращается -1.
  • Replace(подстрока1, подстрока2) – заменяет все вхождения подстроки1 подстрокой2.
  • StartsWith(подстрока) – проверяет, совпадает ли начало строки с указанной подстрокой.
  • EndsWith(подстрока) – проверяет, совпадает ли конец строки с указанной подстрокой.

Пример использования указанных методов приведен ниже

Удаление и добавление подстрок

Разделение и объединение строк

Для разделения строки на подстроки и сохранения их в массив используется метод Split() , в качестве аргумента которому передается символ-разделитель. По умолчанию в качестве символа разделителя используется пробел.
Для объединения строк в единую строку используется статический метод Join() , в качестве аргументов которому передаются строка-разделитель и массив строк, которые необходимо объединить через указанный разделитель.

Рассмотрим пример – посчитать количество слов во введенной строке.
Разделим строку на слова, посчитаем количество слов. Затем выведем массив слов и объединим слова снова в единую строку, используя в качестве разделителя строку » | » .

Однако если слова разделяются не одним, а несколькими пробелами, то количество элементов в массиве s2 будет больше, чем количество слов:

Метод Split() содержит перегрузку, позволяющую указать, что пустые строки из формируемого массива следует удалить – опция StringSplitOptions .RemoveEmptyEntries . Однако в этом случае в качестве разделителя необходимо указать массив символов или строк.

Кроме того, для удаления начальных и конечных символов- разделителей из строки можно использовать метод Trim() .

Форматирование объектов

Класс String содержит статический метод Format( String , Object ) , который позволяет перевести указанный объект в строковое представление в соответствии с форматом, указанным в форме строки в качестве первого аргумента. Однако различные типы значений имеют различные форматы представления, и это – тема для отдельной статьи.

Закрепить использование строк Вы можете в разделе Строки курса Алгоритмика

Автор: Вставская Елена Владимировна

Начинаем практику по языку C#

Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.

Основатель проекта

Вебинары C#

+ Бесплатно, каждую субботу
+ Создание программ с нуля
+ Решение консольных задач

Видео-уроки

+ 300 практических видеоуроков
+ 400 интерактивных задач
+ Видео-решения и разбор

Миссия

Погружение в язык C#
Мотивация к изучению языка
Прокачка навыков программирования

Strings in C#

In this part of the C# tutorial, we will work with string data in more detail. Strings are very important in computer languages. That is why we dedicate a whole chapter to working with strings in C#.

C# string definition

A string is a sequence of characters. In C#, a string is a sequence of Unicode characters. It is a data type which stores a sequence of data values, usually bytes, in which elements usually stand for characters according to a character encoding. When a string appears literally in the source code, it is known as a string literal.

Strings are objects. There are two basic classes for working with strings:

The String is an immutable sequence of characters. The StringBuilder is a mutable sequence of characters.

In C#, string is an alias for System.String . The string is a language keyword and the System.String is a .NET type.

C# initializing strings

There are multiple ways of creating strings, both immutable and mutable. We will show a few of them.

The example shows a few ways of creating System.String and System.Text.StringBuilder objects.

This statement enables to use the System.Text.StringBuilder type without qualification.

The most common way is to create a string object from a string literal.

Here we create a string object from an array of characters. The string is an alias for the System.String .

A StringBuilder object is created from a String .

We create an empty StringBuilder object. We append three strings into the object.

Running the example gives this result.

C# string interpolation

The $ special character prefix identifies a string literal as an interpolated string. An interpolated string is a string literal that might contain interpolated expressions.

String formatting is a similar feature to string interpolation; it is covered later in the chapter.

The example presents C# string interpolation.

The interpolated variables are placed between <> brackets.

The interpolation syntax can receive expressions or formatting specifiers.

This is the output.

C# regular strings

Regular strings can contain escape sequences, such as new line or tab character, which are interpreted. Regular strings are placed between a pair of double quotes.

The example prints two strings which contain t and n escape sequences.

When working with e.g. paths, the shashes must be escaped.

This is the output.

C# verbatim strings

Verbatim strings do not interprete escape sequences. Verbatim strings are preceded with the @ character. Verbatim strings can be used to work with multiline strings.

In this code example we work with verbatim strings.

The t special character is not interpreted; it is only printed to the console.

Verbatim strings are convenient when we work with paths; the shashes do not have to be escaped.

Verbatim strings allow us to create multiline strings.

This is the output.

C# strings are objects

Strings are objects. They are reference types. Strings are instances of the System.String or System.Text.StringBuilder class. Since they are objects, they have multiple methods available for doing various work.

Читать еще:  Синус в си шарп

In this program, we demonstrate that strings are objects. Objects must have a class name, a parent class and they must also have some methods that we can call or properties to access.

An object of System.String type is created.

We determine the class name of the object to which the lang variable refers.

A parent class of our object is received. All objects have at least one parent — the Object .

Objects have various methods. With the Equals() method we check if the string is empty.

The Length property returns the size of the string.

This is the output of the stringobjects.exe program.

C# mutable & immutable strings

The String is a sequence of immutable characters, while the StringBuilder is a sequence of mutable characters. The next example will show the difference.

Both objects have methods for replacing characters in a string.

Calling a Replace() method on a String results in returning a new modified string. The original string is not changed.

The Replace() method of a StringBuilder will replace a character at the given index with a new character. The original string is modified.

This is the output of the program.

C# concatenating strings

Immutable strings can be added using the + operator or the Concat() method. They will form a new string which is a chain of all concatenated strings. Mutable strings have the Append() method which builds a string from any number of other strings.

It is also possible to concatenate strings using string formatting and interpolation.

The example creates five sentences by concatenating strings.

A new string is formed by using the + operator.

The Concat() method concatenates two strings. The method is a static method of the System.String class.

A mutable object of the StringBuilder type is created by calling the Append() method three times.

A string is formed with string formatting.

Finally, the strings are added with the interpolation syntax.

This is the example output.

C# using quotes

When we want to display quotes, for instance in direct speech, the inner quotes must be escaped.

This example prints direct speech.

Inside a regular string, the character is escaped with .

Inside a verbatim string, the quote is preceded with another quote.

This is the output of the program.

C# comparing strings

We can compare two strings with the == operator.

In the example program, we compare strings.

This is the output of the program.

The string.Compare() method compares two specified strings and returns an integer that indicates their relative position in the sort order. If the returned value is less than zero, the first string is less than the second. If it returns zero, both strings are equal. Finally, if the returned value is greater than zero, the first string is greater than the second.

There is an optional third ignoreCase argument. It determines if the case should be honored or not.

Compare two strings and ignore the case. This line prints 0 to the console.

C# string elements

A string is a sequence of characters. A character is a basic element of a string.

In the first example, we will work with an immutable string.

A new immutable string is formed from an array of characters.

Using the array access notation, we get the first and the last char value of the string.

With the above methods, we get the first and the last occurrence of the character ‘e’.

With the Contains() method we check if the string contains the ‘t’ character. The method returns a boolean value.

The ToCharArray() method creates a character array from the string. We go through the array and print each of the characters.

This is the example output.

In the second example, we will work with the elements of a mutable string.

A mutable string is formed. We modify the contents of the string by deleting, appending, inserting, and replacing characters.

This line deletes the last character.

The deleted character is appended back to the string.

We insert four characters at the beginning of the string.

Finally, we replace a character at index 4.

From the output we can see how the mutable string is changing.

C# string Join and Split

The Join() joins strings and the Split() splits the strings.

In our program, we will join and split strings.

This is an array of strings. These strings are going to be joined.

All words from the array are joined. We build one string from them. There will be a comma character between each two words.

As a reverse operation, we split the langs string. The Split() method returns an array of words, delimited by a character. In our case it is a comma character.

We go through the array and print its elements.

This is the output of the example.

C# common methods

Next, we present a couple of additional common string methods.

We introduce five string methods in the above example.

The Contains() method returns True if the string contains a specific character.

The IndexOf() returns the first index of a letter in the string.

The LastIndexOf() methods returns the last index of a letter in a string.

Letters of the string are converted to uppercase with the ToUpper() method and to lowercase with the ToLower() method.

Running the program.

C# string Copy vs Clone

We will describe a difference between two methods: Copy() and Clone() . The Copy() method creates a new instance of string with the same value as a specified string. The Clone() method returns a reference to the string which is being cloned. It is not an independent copy of the string on the Heap. It is another reference on the same string.

Our example demonstrates the difference between the two methods.

The string value is cloned and copied.

The Equals() method determines whether two string objects have the same value. The contents of all three strings are the same.

The ReferenceEquals() method compares the two reference objects. Therefore comparing a copied string to the original string returns false. Because they are two distinct objects.

C# formatting strings

In the next examples, we will format strings. The .NET Framework has a feature called composite formatting. It is supported by Format() and WriteLine() methods. A method takes a list of objects and a composite format string as input. The format string consists of fixed string and some format items. These format items are indexed placeholders which correspond to the objects in the list.

The format item has the following syntax:

The index component is mandatory. It is a number starting from 0 that refers to an item from the list of objects. Multiple items can refer to the same element of the list of objects. An object is ignored if it is not referenced by a format item. If we refer outside the bounds of the list of objects, a runtime exception is thrown.

The length component is optional. It is the minimum number of characters in the string representation of the parameter. If positive, the parameter is right-aligned; if negative, it is left-aligned. If it is specified, there must by a colon separating the index and the length.

The formatString is optional. It is a string that formats a value is a specific way. It can be used to format dates, times, numbers or enumerations.

We print a simple message to the console. We use only index component of the format item.

The <0>, <1>, and <2>are format items. We specify the index component. Other components are optional.

Now we put together the composite formatting. We have the string and the list of objects (oranges, apples, bananas). The <0>format item refers to the oranges. The WriteLine() method replaces the <0>format item with the contents of the oranges variable.

Читать еще:  Скачать музыку с вк безопасно

The order of the format items referring to the objects is notation important.

We can see the outcome of the program.

The next example will format numeric data.

We print numbers in a decimal and hexadecimal format. We also align the numbers using the length component.

The <0_D>format item specifies, the first item from the list of supplied objects will be taken and formatted in the decimal format. The <1,8:X>format item takes the second item. Formats it in the hexadecimal format :X . And the string length will be 8 characters 8 . Because the number has only three characters, it is right aligned and padded with empty strings.

Running the example we get this outcome.

The last two examples will format numeric and date data.

The example demonstrates the standard formatting specifiers for numbers. Number 126 is printed in five different formats: normal, scientific, currency, percent and hexadecimal.

This is the output of the program.

Finally, we will format date and time data.

The code example shows six various formats for current date and time.

This is the output of the example.

This part of the C# tutorial covered strings.

C#: строки (Strings)

Тип string (синоним System.String ) представляет беспрерывную последовательность юникод символов. Строковые литералы указываются внутри двойных кавычек.

String — ссылочный тип, однако операторы отношений взаимодействуют со строками как со значимыми типами:

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

Недостаток этого в том, что если нужно использовать символ обратного слэша , его нужно писать дважды (экранировать):

Чтобы избежать этой проблемы можно использовать дословные (буквальные, verbatim) строковые литералы. Эти литералы начинаются с символа @ и не поддерживают управляющих последовательностей. Они могут занимать несколько строк. Чтобы использовать внутри дословных литералов двойные кавычки их нужно писать дважды.

Объединение (concatenation) строк

Оператор + объединяет две строки:

Один из операндов может быть и не строкой. В этом случает для него скрыто будет вызван метод ToString :

Многократное использование оператора + для построения большой составной строки может быть не эффективным. Для этой цели лучше использовать тип System.Text.StringBuilder , который представляет динамически изменяющуюся строку и включает методы Append , Insert , Remove , и Replace .

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

Строки не поддерживают операторы и > . Вместо них для сравнения строк нужно использовать строковой метод CompareTo , который возвращает 1 если первая строка предшествует второй, -1 если вторая строка предшествует первой и 0 если строки равны:

Поиск в строке и перечисление

Строковой индексатор возвращает символ с указанной позицией:

string реализует интерфейс IEnumerable , поэтому по символам строки можно проходить с помощью foreach :

Простейшими методами для выполнения поиска в строке являются Contains , StartsWith , и EndsWith , все они возвращают true или false :

Метод IndexOf возвращает позицию первого вхождения заданного символа или подстроки (или -1 если символ или подстрока не найдены):

Методы StartsWith , EndsWith и IndexOf перегружены и могут принимать enum StringComparison или объект CultureInfo , чтобы управлять чувствительность к регистру и культуре:

Метод IndexOf также может принимать startPosition — индекс, с которого должен начинаться поиск.

Метод LastIndexOf похож на IndexOf , но ищет начиная с конца строки.

Метод IndexOfAny возвращает позицию первого вхождения любого символа из набора, а метод LastIndexOfAny делает тоже самое в обратном направлении:

Строковые операции

Поскольку строка является неизменной, все ее методы возвращают новое значения, оставляя исходную строку нетронутой. Помимо указанных выше строка имеет следующие методы:

  • Substring — извлекает часть строки
  • Insert и Remove — вставляют и удаляют символы в указанную позицию
  • PadLeft и PadRight — добавляют пробелы в начали и конце строки
  • TrimStart , TrimEnd , и Trim удаляют пробелы
  • ToUpper и ToLower — преобразуют строку в верхний или нижний регистр
  • Split — разбивает строку на подстроки по переданному разделителю
  • Join — объединяет подстроки в строку

Конструирование строк

Простейший способ создать строку — это присвоение литерала:

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

Строку можно сконструировать из массива char . Метод ToCharArray делает обратное:

null и пустые строки

Чтобы создать пустую строку можно использовать литерал, либо статическое поле string.Empty . Пустая строка имеет нулевую длину и ее свойство Length равно нулю:

Поскольку строки являются ссылочными типами они могут принимать значение null :

Статический метод string.IsNullOrEmpty позволяет проверить является ли строка null или пустой.

Методы манипулирования строками

Поскольку строка является неизменяемой, все методы манипулирующие строкой возвращают новую строку, оставляя исходную незатронутой.

Метод Substring извлекает часть строки:

Методы Insert и Remove вставляют либо удаляют символы в указанной позиции:

Методы PadLeft и PadRight дополняют строку до заданной длины слева или справа указанным символом или пробелом если символ не указан. Если входная строка длиннее заданной длины для дополнения, исходная строка возвращается неизмененной:

Методы TrimStart и TrimEnd удаляют указанные символы с начала или конца строки, а метод Trim с двух сторон. Если символ для удаления не указан, удаляется пробельные символы:

Метод Replace заменяет все непересекающиеся вхождения заданного символа или подстроки на другой символ или строку:

Методы ToUpper и ToLower возвращают версию входной строки в верхнем или нижнем регистре с учетом языковых настроек пользователя, а методы ToUpperInvariant и ToLowerInvariant без их учета.

Объединение и разбиение строк

Метод Split принимает предложение и возвращает массив слов. По умолчанию в качестве разделителей метод использует пробельные символы. Перегруженная версия может принимать массив разделителей char или string . Также метод может принимать enum StringSplitOptions , который имеет опцию для удаления пустых элементов.

Статический метод Join выполняет действие противоположное методу Split . Он требует указания разделителя и строкового массива.

Статический метод Concat похож на Join , но принимает только строковой массив без разделителя. Он полностью эквивалентен операции + :

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

При сравнении строк применяются два базовых алгоритма:

  • ординальное сравнение — символы интерпретируются как числа согласно их числовым кодам в Unicode
  • сравнение чувствительно к культуре — символы интерпретируются со ссылкой на конкретный язык. Существует две специальные культуры: текущая культура — культура заданная в настройках конкретной машины; инвариантная культура — одинакова для всех компьютеров (американская культура)

Для сравнения эквивалентности строк можно использовать оператор == или один из методов Equals типа string . Последний существует в двух вариантах: статический и экземплярный. Статически метод полезен тем, что он работает, когда одна или обе строки равны null :

Оператор == и метод string.Equals вызванный без параметров всегда выполняют ординальное сравнение, чувствительное к регистру. Метод string.Equals вызванный с дополнительным параметром StringComparison comparisonType может выполнять сравнение с учетом культуры и нечувствиетльное к регистру. StringComparison определен следующим образом:

Для сравнения порядка могут быть использованы либо экземплярный метод CompareTo , либо статические Compare и CompareOrdinal . Они возвращают положительное, отрицательное число либо ноль в зависимости от того находится ли первое значение до, после или рядом со вторым.

Метод CompareTo выполняет чувствительное к культуре и регистру сравнение. Методы Compare и CompareOrdinal в зависимости от переданных аргументов могут выполнять разные виды сравнения:

StringBuilder

Класс System.Text.StringBuilder представляет изменяемую (редактируемую) строку. С его помощью можно добавлять (метод Append ), вставлять ( Insert ), удалять ( Remove ) и заменять ( Replace ) подстроки, не заменяя целиком StringBuilder . Конструктор StringBuilder дополнительно может принимать начальное значение строки, а также стартовую длину строки (по умолчанию 16 символов). Использование класса StringBuilder для построения строк более эффективно, чем выполнение множества конкатенаций строк.

Метод AppendLine добавляет подстроку и завершает ее символами новой строки ( rn ). Метод AppendFormat принимает смешанную форматную строку точно как String.Format . Класс StringBuilder также содержит свойство Length и индексатор для получения и установки отдельных символов.

Для очистки содержимого StringBuilder нужно либо создать новый экземпляр, либо установить его свойство Length равным 0 (последний вариант не уменьшит объем занимаемой памяти).

Кодировка

Стандартной кодировкой .NET для символов и строк является UTF-16, а для потокового ввода-вывода — UTF-8.

Класс System.Text.Encoding является базовым классом для типов, инкапсулирующих кодировки текста. Создать экземпляр Encoding можно с помощью статического метода Encoding.GetEncoding , передав ему стандартное имя IANA:

Читать еще:  Int в си размер

Экземпляры наиболее распространенных кодировок также могут быть получены через статические свойства Encoding :

Статический метод GetEncodings возвращает список всех поддерживаемых кодировок:

Также экземпляр Encoding можно создать с помощью конструктора. В этом случае можно задать дополнительные параметры, передав необходимые аргументы.

Форматирование и разбор (Formatting and Parsing)

Форматирование — преобразование в строку, разбор (парсинг) — преобразование из строки.

Методы ToString и Parse

Методы ToString и Parse являются стандартным механизмом для форматирования и разбора строк. ToString обеспечивает осмысленный вывод для всех простых значимых типов ( bool , DateTime , DateTimeOffset , TimeSpan , Guid и всех числовых типов). Для обратной операции в каждом из указанных типов определен статический метод Parse :

Метод Parse генерирует исключение FormatException в случае неудачной попытки разбора. Многие типы также определяют метод TryParse , который в случае неудачной попытки разбора возвращает false вместо генерации исключения.

Методы ToString , Parse и TryParse для числовых типов и классов DateTime и DateTimeOffset учитывают местные настройки культуры. Также им можно передать объект CultureInfo , содержащий иные настройки культуры, которые будут использованы вместо местных:

Интерфейс IFormattable

Метод ToString числовых типов и типов DateTime / DateTimeOffset реализует интерфейс IFormattable — стандартный интерфейс для поддержки форматных строк и поставщиков форматов:

В связи с этим метод ToString указанных типов может принимать в качестве дополнительных аргументов форматную строку и/или поставщиков форматов. Форматная строка предоставляет инструкции, поставщик формата определяет, как эти инструкции должны применяться:

В примере «C» — форматная строка, которая означает денежное значение (currency), а объект NumberFormatInfo — поставщик формата, определяющий, как должно визуализироваться денежное значение.

Если для форматной строки и поставщика указать null , будут использованы стандартные варианты. Стандартный поставщик формата — CultureInfo.CurrentCulture , который отражает настройки панели управления компьютера во время выполнения:

Для удобства большинство типов перегружаю метод ToString , чтобы null для поставщика можно было не указывать:

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

Форматная строка

Существует два вида форматных строк:

  • стандартные форматные строки — обеспечивают общее управление форматированием при преобразовании числа или даты/времени в строку; состоят из одной буквы, за которой может следовать цифра
  • специальные форматные строки — позволяют контролировать при форматировании каждый символ с помощью шаблона, сотоящего из произвольного количества предопределенных символов

Подробно форматные строки для чисел и даты/времени рассматриваются в разделах, посвященных этим типам.

Поставщики форматов (Format Providers)

Поставщики форматов дают большую гибкость при форматировании и разборе строки, а также чувствительны к культуре. В .NET определены три поставщика формата (все реализуют интерфейс IFormatProvider ):

  • NumberFormatInfo
  • DateTimeFormatInfo
  • CultureInfo

Все типы enum также поддерживают форматирование, но специальный поставщик формата для них не предусмотрен.

В контексте поставщиков формата CultureInfo представляет собой механизм косвенного обращения к двум другим поставщикам формата — NumberFormatInfo или DateTimeFormatInfo . Он возвращает NumberFormatInfo или DateTimeFormatInfo применимый к региональным настройкам культуры:

String си шарп

Все уроки по C# расположены здесь.

В этой статье мы начнем изучение строкового типа данных. Это, возможно, самый важный собственный тип данных в языке программирования C#. Используя строки, мы можем выполнять обработку текстовой информации.

В C# строковой тип данных (String) используется для определения ряда символов Unicode. Серия может быть как из нуля символов (пустая строка) или гораздо больше. Теоретический максимальный размер составляет несколько миллиардов символов. Однако это может быть недостижимо, так как операционная система может не предоставить достаточно памяти для хранения таких строк.

Строки — это объекты

Переменные типы в c# могут быть разделены на две группы. Эти типы значений и ссылочные типы. Все типы данных, которые были рассмотрены до сих пор в нашем учебнике — то были типы значений, или структур. Строковый тип данных — это не структура, это класс. Классы отличаются от структур. Они используются в объектно-ориентированном программировании – я писал уже о нем, но напишу и здесь некоторые ключевые моменты о классах, которые вы должны знать.

Все строки являются объектами типа string. Все объекты могут иметь значение null, указывающее, что они не определены. Поэтому любой объект string является nullable. В отличие от типов данных nullable numeric и character, описанных ранее в этом руководстве, это относится ко всем версиям платформы .NET framework.

Второй важный факт по объектам заключается в том, что они являются ссылочными типами. Это означает, что данные в объекте хранятся где-то в памяти компьютера, а переменная содержит указатель на эту память. Это означает, что два объекта одного типа могут указывать на одну и ту же область памяти, и в этом случае два объекта на самом деле совпадают; изменение на один отражается в другом. Это станет более важным, когда мы будем рассматривать создание методов позже в этом учебнике C#.

Важным свойством строк в том, что они доступны только для чтения или неизменяемы. После создания строки ее содержимое не может быть изменено. Это может быть сюрпризом даже для опытных разработчиков C#, так как строки могут быть легко созданы и изменены. Однако при обновлении строки .NET framework фактически удаляет оригинал и создает новую строку. Для строк, которые изменяются нечасто, это позволяет их более эффективно обрабатывать. Часто модифицируемые строки могут быстро стать неэффективными; в этом случае лучше использовать другой класс StringBuilder.

Значение строки присваивается с помощью оператора присваивания (=). Как и в случае с символьным типом данных, при назначении литерального значения необходимо использовать символы-разделители для идентификации начальной и конечной информации. Кавычки («) используются для строковых литералов.

Как указывалось ранее, строки являются объектами и поэтому могут содержать null. Значение null может быть присвоено аналогичным образом, как и при использовании nullable в числовых типов данных.

Строка null указывает, что переменная не определена. Часто требуется сохранить пустую строку. Это отличается от null, поскольку значение определено, хотя оно не содержит символов. Существует два способа присвоения пустого строкового значения. Вы можете использовать пару кавычек или String.Empty значение. Последнее иногда предпочтительнее, так как некоторые разработчики считают его более читаемым.

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

Класс string определяет несколько конструкторов. Большинство из них выходят за рамки этого учебника. Один интересный конструктор позволяет указать символ и целое число, чтобы создать строку, содержащую один символ, повторяемый много раз. Этот конструктор используется в следующем примере. Обратите внимание на использование нового ключевого слова, которое используется, когда объекты создаются таким образом:

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

Чтобы включить кавычки необходим специальный код или последовательность Escape-символов. Последовательности Escape-символов предоставляются в виде обратной косой черты ( ), за которой следует один или несколько символов, определяющих добавляемую информацию. Для кавычек escape-код является обратной косой чертой и кавычкой («). Это показано ниже

Аналогичная проблема существует для символьных литералов, где требуется символ апострофа. Как и следовало ожидать, можно использовать обратную косую черту и апостроф (‘).

Буквальные (дословные) строковые литералы

C# поддерживает второй тип строкового литерала, который известен как дословный (буквальный) строковый литерал. Он не требует использования escape-символов для определения специальных символов. Вместо этого любая информация в исходном коде, включая новые линии, включается в строку. Определение дословного литерала — префикс строки с символом @ перед открывающей кавычкой. Единственный символ, который требует другого действия, — это сама кавычка, которая должна быть введена дважды, чтобы указать один символ.


Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

статьи IT, Уроки по си шарп, си шарп

Ссылка на основную публикацию
Adblock
detector