Как вывести строку си шарп

Содержание
  1. Как вывести строку си шарп
  2. Console.Write
  3. Консольный ввод
  4. Строки в C#: методы работы со строками
  5. Основные методы работы со строками в C#
  6. Сравнение строк в C#
  7. Сравнение строк в C# без учёта региональных настроек
  8. Проверка вхождения подстроки в строку в C#
  9. Объединение строк в C# (конкатенация строк)
  10. Объединение строк с использованием разделителя в C#
  11. Копирование строк в C#
  12. Проверка совпадения строк в C#
  13. Форматирование строк в C#
  14. Поиск в строках C#
  15. Вставка подстроки в строку C#
  16. Замена символов и подстрок в строках C#
  17. Разделение строк на подстроки в C#
  18. Извлечение подстрок из строки в C#
  19. Изменение регистра строк в C#
  20. Обрезка строк в C#
  21. Итого
  22. Строки (Руководство по программированию на C#)
  23. Сравнение строки и System.String
  24. Объявление и инициализация строк
  25. Неизменность строковых объектов
  26. Регулярные и буквальные строковые литералы
  27. Escape-последовательности строк
  28. Строки формата
  29. Интерполяция строк
  30. Составное форматирование
  31. Подстроки
  32. Доступ к отдельным символам
  33. Строки NULL и пустые строки
  34. Использование класса StringBuilder для быстрого создания строк
  35. Строки, методы расширения и LINQ

Как вывести строку си шарп

Для вывода информации на консоль мы уже использовали встроенный метод Console.WriteLine . То есть, если мы хотим вывести некоторую информацию на консоль, то нам надо передать ее в метод Console.WriteLine:

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

Для встраивания отдельных значений в выводимую на консоль строку используются фигурные скобки, в которые заключается встраиваемое значение. Это можем значение переменной ( ) или более сложное выражение (например, операция сложения <4 + 7>). А перед всей строкой ставится знак доллара $.

Читайте также:  Как вывести клей титан с ткани

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

Есть другой способ вывода на консоль сразу нескольких значений:

Здесь мы видим, что строка в Console.WriteLine содержит некие числа в фигурных скобках: <0>, <1>, <2>. Это плейсхолдеры, вместо которых при выводе строки на консоль будут подставляться некоторые значения. Подставляемые значения указываются после строки через запятую.

При этом важен порядок подобных плейсхолдеров. Например, в данном случае после строки первой указана переменная name, потом height и потом age. Поэтому значение переменной name будет всавляться вместо первого плейсхолдера — <0>(нумерация начинается с нуля), height — вместо <1>, а age — вместо <2>. Поэтому в итоге пи выводе на консоль строка

будет заменена на

Console.Write

Кроме Console.WriteLine() можно также использовать метод Console.Write() , он работает точно так же за тем исключением, что не добавляет переход на следующую строку, то есть последующий консольный вывод будет выводиться на той же строке.

Консольный ввод

Кроме вывода информации на консоль мы можем получать информацию с консоли. Для этого предназначен метод Console.ReadLine() . Он позволяет получить введенную строку.

В данном случае все, что вводит пользователь, с помощью метода Console.ReadLine() передается в переменную name.

Пример работы программы:

Особенностью метода Console.ReadLine() является то, что он может считать информацию с консоли только в виде строки. Кроме того, возможная ситуация, когда для метода Console.ReadLine не окажется доступных для считывания строк, то есть когда ему нечего считывать, он возвращаает значение null , то есть, грубо говоря, фактически отсутствие значения. И чтобы отразить эту ситуацию мы определяем переменную name , в которую получаем ввод с консоли, как переменную типа string? . Здесь string указывает, что переменная может хранить значения типа string, то есть строки. А знак вопроса ? указывает, что переменная также может хранить значение null , то есть по сути не иметь никакого значения. Далее мы более подробно разберем null и как с ним работать.

Однако, может возникнуть вопрос, как нам быть, если, допустим, мы хотим ввести возраст в переменную типа int или другую информацию в переменные типа double или decimal? По умолчанию платформа .NET предоставляет ряд методов, которые позволяют преобразовать различные значения к типам int, double и т.д. Некоторые из этих методов:

Convert.ToInt32() (преобразует к типу int)

Convert.ToDouble() (преобразует к типу double)

Convert.ToDecimal() (преобразует к типу decimal)

Пример ввода значений:

При вводе важно учитывать текущую операционную систему. В одних культурах разделителем между целой и дробной частью является точка (США, Великобритания. ), в других — запятая (Россия, Германия. ). Например, если текущая ОС — русскоязычная, значит, надо вводить дробные числа с разделителем запятой. Если локализация англоязычная, значит, разделителем целой и дробной части при вводе будет точка.

Источник

Строки в C#: методы работы со строками

В предыдущей статье мы рассмотрели основные моменты, касающиеся работы со строками в C#: создание строк, неизменность строк, использование регулярных и буквальных литералов в строках и так далее. Сегодня мы продолжим разбираться с этой важной и довольно интересной темой и рассмотрим основные методы работы со строками в C#.

Основные методы работы со строками в C#

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

  • Compare — сравнивает две строки с учетом текущих региональных настроек (локали) пользователя
  • CompareOrdinal — сравнивает две строки без учета локали
  • Contains — проверяет, содержится ли заданная подстрока в строке
  • Concat — объединяет строки
  • CopyTo — копирует часть строки, начиная с определенного индекса, в массив
  • EndsWith — проверяет совпадает ли конец строки с подстрокой
  • Format — форматирует строку
  • IndexOf — находит индекс первого вхождения символа или подстроки в строке
  • Insert — вставляет в строку подстроку
  • Join — соединяет элементы массива строк
  • LastIndexOf — находит индекс последнего вхождения символа или подстроки в строке
  • Replace — заменяет в строке символ или подстроку другим символом или подстрокой
  • Split — разделяет одну строку на массив строк
  • Substring — извлекает из строки подстроку, начиная с указанной позиции
  • ToLower — переводит все символы строки в нижний регистр
  • ToUpper — переводит все символы строки в верхний регистр
  • Trim — удаляет начальные и конечные пробелы из строки

Рассмотрим представленные методы более подробно.

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

Для сравнения двух строк в C# удобно использовать метод Compare .

Результатом выполнения метода является целое число Int32. Это число означает следующее:

Результат Compare Что означает
Меньше нуля strA предшествует strB в порядке сортировки (стока strA меньше строки strB ).
Нуль strA занимает ту же позицию в порядке сортировки, что и объект strB (строки равны)
Больше нуля strA следует за strB в порядке сортировки (стока strA больше строки strB ).

Вернет значение 0 так как строки равны.

У класса String есть также несколько перегруженных методов Compare , позволяющих провести настройку способа сравнения строк. Например, можно сравнивать строки, игнорируя регистр:

или определить свои настройки сравнения строк, используя следующий вариант метода Compare :

Несмотря на то, что метод Compare по умолчанию предназначен для сравнения строк с учётом локали, используя перегруженные версии метода, можно сравнивать строки и без учёта региональных настроек, например, воспользовавшись вот таким способом:

Сравнение строк в C# без учёта региональных настроек

Метод CompareOrdinal сравнивает два объекта String , оценивая числовые значения соответствующих объектов Char в каждой строке. Результат выполнения метода такой же, как и у предыдущего метода Compare (см. таблицу выше).

Проверка вхождения подстроки в строку в C#

Метод Contains проверяет, входит ли заданная подстрока в строку. Этот метод не статический, поэтому использовать его необходимо только после создания объекта, то есть следующим образом:

В примере выше мы проверяем содержится ли подстрока «ока» в строке «Строка» . Очевидно, что результатом выполнения метода будет true .

Объединение строк в C# (конкатенация строк)

Для объединения строк в C# удобно использовать метод Concat . Этот метод принимает два или более параметров, позволяя объединять не только строки, но и строковые представления любых объектов. Например:

Также возможно объединять и массивы строк:

Объединение строк с использованием разделителя в C#

Для того, чтобы объединить несколько строк с использованием заданного разделителе, в C# используется метод Join . В качестве входных параметров метод Join принимает массив или коллекцию строк и символ-разделитель, например:

Для приведенного выше примера в консоли мы получим следующую объединенную строку:

Копирование строк в C#

Для копирования строк в C# можно воспользоваться не статическим методом CopyTo . Этот метод копирует из строки часть символов, начиная с заданной позиции, и вставляет их в массив символов, также с указанной позиции. Сигнатура метода следующая:

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

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

В этом примере из строки s6 копируется 4 символа, начиная с символа с индексом 2 (так как нумерация начинается с нуля, то первый копируемый символ r ) и вставляется в массив charArr , начиная с первого элемента (с индексом 0 )

Также можно воспользоваться статическим методом Copy для создания полной копии строки:

Проверка совпадения строк в C#

Достаточно часто при работе со строками приходится проверять вхождение одной подстроки в другую. Для выполнения проверки совпадения строк и подстрок в C# можно воспользоваться двумя методами:

Первый метод ( EndWith ) проверяет заканчивается ли проверяемая строка подстрокой value , а второй, соответственно, проводит проверку на наличие подстроки value в начале строки. Оба метода имеют перегрузки. Пример:

Форматирование строк в C#

Помимо использования регулярных и буквальных литералов при работе со строками, мы также можем создавать строки в C# используя метод Format . Для того, чтобы раскрыть все возможности форматирования строк, думаю, что потребуется написать отдельную статью. Сейчас же я просто продемонстрирую некоторые основные возможности использования этого метода.

Результатом будет следующая строка:

Поиск в строках C#

Ещё одной частой задачей при работе со строками в C# является поиск символов и подстрок в строках. Поиск в строке можно осуществить, в том числе, с использованием метода IndexOf , имеющего несколько перегрузок:

Этот метод возвращает индекс первого вхождения указанного символа или подстроки в строку. Например,

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

Индекс первого символа искомой подстроки 18

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

Вставка подстроки в строку C#

Для вставки одной строки в другую в C# можно воспользоваться методом Insert :

Этот метод вставляет в строку, начиная с индекса startIndex подстроку value и возвращает в результате новый экземпляр строки. Например,

Замена символов и подстрок в строках C#

Для замены символов и подстрок в строках C# используется метод Replace:

Например, заменим все символы o с строке на символы А :

Разделение строк на подстроки в C#

Разделение строк на подстроки в C# также является достаточно частой задачей в программировании. Для этого можно воспользоваться методом Split

В качестве параметров метод Split принимает один или несколько символов ( Char ), используемых в качестве разделителя, а на выходе возвращает массив строк. Рассмотрим работу метода Split на примере

Здесь в качестве разделителей мы используем два символа — пробел и запятую. Результатом выполнения кода будет следующий вывод в консоли:

Извлечение подстрок из строки в C#

Для извлечения подстрок из строки используется метод Substring :

При использовании первого варианта метода (с одним параметром) из строки извлекается подстрока, начинающаяся с индекса startIndex и, при этом, извлечение происходит до конца строки. Во втором случае подстрока извлекается также, начиная с индекса startIndex , однако длина извлекаемой подстроки ограничивается вторым параметром — length .

Пример использования метода представлен ниже:

Изменение регистра строк в C#

Для изменения регистра символов в строке в C# можно воспользоваться двумя методами:

Метод ToLower меняет регистр всех символов в строке на нижний, а метод ToUpper , напротив — меняет регистр всех символов в строке на верхний. Пример

Обрезка строк в C#

Иногда требуется избавиться в строке от лишних символов в начале, в конце или одновременно и вначале и в конце. «Лишними» могут быть как обычные проблелы, так и прочие символы. Для обрезки строки в C# можно воспользоваться методами Trim* :

По названию метода можно понять смысл его работы. Так, если используется метод Trim() , то обрезка строки происходит и сначала и с конца, если же используется TrimEnd() , то строка обрезается только с конца. При этом, если используется версия метода без параметров, то из строки удаляются лидирующие или замыкающие пробелы, иначе — определенные в параметрах метода символы. Например,

Итого

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

Источник

Строки (Руководство по программированию на C#)

Строка — это объект типа String, значением которого является текст. Внутри программы текст хранится в виде упорядоченной коллекции объектов Char только для чтения. В конце строки C# нет нуль-символов. Поэтому строка C# может содержать любое число внедренных нуль-символов (‘\0’). Свойство Length строки соответствует числу содержащихся в ней объектов Char , но не числу символов Юникода. Для доступа к отдельным кодовым точкам Юникода в строке используйте объект StringInfo.

Сравнение строки и System.String

В C# ключевое слово string является псевдонимом для String. Таким образом, String и string являются эквивалентами. Однако рекомендуется использовать предоставленный псевдоним string , так как он работает даже без using System; . Класс String предоставляет множество методов для безопасного создания, обработки и сравнения строк. Кроме того, язык C# перегружает некоторые операторы для упрощения типичных операций со строками. Дополнительные сведения о ключевых словах см. в статье, посвященной строкам. Дополнительные сведения о типе и его методах см. здесь: String.

Объявление и инициализация строк

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

Обратите внимание, что вы не используете оператор new для создания объекта строки, за исключением случаев инициализации строки с помощью массива символов.

Инициализируйте строку с константным значением Empty для создания нового объекта String, строка которого имеет нулевую длину. Представлением строкового литерала строки с нулевой длиной является «». Если вы инициализируете строки со значением Empty вместо NULL, вы снизите вероятность появления исключения NullReferenceException. Используйте статический метод IsNullOrEmpty(String), чтобы проверить значение строки, прежде чем пытаться получить к ней доступ.

Неизменность строковых объектов

Строковые объекты являются неизменяемыми: их нельзя изменить после создания. Может показаться, что все методы String и операторы C# изменяют строку, но в действительности они возвращают результаты в новый строковый объект. Когда содержимое s1 и s2 объединяется для формирования одной строки, две исходные строки не изменяются, как показано в следующем примере. Оператор += создает новую строку, которая содержит объединенное содержимое. Этот новый объект присваивается переменной s1 , а исходный объект, который был присвоен s1 , освобождается для сборки мусора, так как ни одна переменная не ссылается на него.

Так как «изменение» строки на самом деле является созданием новой строки, создавать ссылки на строки следует с осторожностью. Если вы создадите ссылку на строку, а затем «измените» исходную строку, ссылка будет по-прежнему указывать на исходный объект, а не на новый объект, который был создан при изменении строки. Это поведение проиллюстрировано в следующем коде:

Сведения о создании новых строк, основанных на таких изменениях, как операции поиска и замены исходной строки, см. в инструкциях по изменению содержимого строки.

Регулярные и буквальные строковые литералы

Используйте регулярные строковые литералы, когда вам нужно внедрить escape-символы, доступные в C#, как показано в следующем примере:

Буквальные строковые литералы используются для удобства и читабельности, если текст строки содержит символы обратной косой черты, например в путях к файлам. Так как буквальные строки сохраняют символы новой строки как часть текста строки, их можно использовать для инициализации многострочных строк. Используйте двойные кавычки, чтобы вставить кавычки в буквальной строке. В следующем примере показаны наиболее часто используемым буквальные строки:

Escape-последовательности строк

Escape-последовательность Имя символа Кодировка Юникод
\’ Одинарная кавычка 0x0027
Двойная кавычка 0x0022
\\ Обратная косая черта 0x005C
\0 Null 0x0000
\a Предупреждение 0x0007
\b Backspace 0x0008
\f Перевод страницы 0x000C
\n Новая строка 0x000A
\r Возврат каретки 0x000D
\t Горизонтальная табуляция 0x0009
\v Вертикальная табуляция 0x000B
\u Escape-последовательность Юникода (UTF-16) \uHHHH (диапазон: 0000–FFFF; пример: \u00E7 = «ç»)
\U Escape-последовательность Юникода (UTF-32) \U00HHHHHH (диапазон: 000000–10FFFF; пример: \U0001F47D = «👽»)
\x Escape-последовательность Юникода аналогична «\u», она отличается только длиной переменной \xH[H][H][H] (диапазон: 0–FFFF; пример: \x00E7 или \x0E7 или \xE7 = «ç»)

Если вы используете escape-последовательность \x с менее чем четырьмя шестнадцатеричными цифрами, то когда непосредственно следующие за ней символы также являются допустимыми шестнадцатеричными цифрами (т. е. 0–9, A–F и a–f), они будут интерпретированы как часть этой escape-последовательности. Например, \xA1 дает результат «¡», являющийся кодовой точкой U+00A1. Однако если следующий символ — «A» или «a», тогда escape-последовательность будет интерпретироваться как \xA1A и даст результат «ਚ», являющийся кодовой точкой U+0A1A. В таких случаях, чтобы избежать некорректной интерпретации, указывайте все четыре шестнадцатеричных знака (например, \x00A1 ).

Во время компиляции буквальные строки преобразуются в обычные строки с теми же escape-последовательностями. Поэтому, если вы просматриваете буквальную строку в окне контрольных значений отладчика, вы увидите escape-символы, добавленные компилятором, а не буквальную версию из исходного кода. Например, буквальная строка @»C:\files.txt» будет отображаться в окне контрольных значений как «C:\\files.txt».

Строки формата

Строка формата — это строка, содержимое которой можно определить динамически во время выполнения. Строки формата создаются путем внедрения интерполированных выражений или заполнителей внутри фигурных скобок в строке. Весь код внутри фигурных скобок ( <. >) будет преобразован в значение и выходные данные как отформатированная строка во время выполнения. Существует два способа создания строк формата: интерполяция строк и составное форматирование.

Интерполяция строк

В C# 6.0 и более поздних версий интерполированные строки определяются по специальному символу $ . Они включают интерполированные выражения в фигурных скобках. См. дополнительные сведения в интерактивном руководстве по интерполяции строк в C#.

Используйте интерполяцию для повышения удобства чтения и обслуживаемости кода. Интерполяция строк позволяет достичь тех же результатов, что и использование метода String.Format , но более простым и понятным способом.

Начиная с C# 10, можно использовать интерполяцию строк для инициализации константной строки, если все выражения, используемые для заполнителей, также являются константными строками.

Составное форматирование

String.Format использует заполнители в фигурных скобках, чтобы создать строку формата. В этом примере результат аналогичен выходным данным, получаемым с помощью метода интерполяции строк, описанного выше.

Подстроки

Подстрока — это последовательность символов, содержащихся в строке. Используйте метод Substring, чтобы создать новую строку из части исходной строки. Одно вхождение подстроки или несколько можно найти с помощью метода IndexOf. Используйте метод Replace, чтобы заменить все вхождения указанной подстроки новой строкой. Как и метод Substring, метод Replace фактически возвращает новую строку и не изменяет исходную строку. См. дополнительные сведения о поиске строк и изменении содержимого строк.

Доступ к отдельным символам

Используя нотацию массива со значением индекса, можно получить доступ только для чтения к отдельным символам, как показано в следующем примере:

Если вам необходимо изменить отдельные символы в строке и функций методов String вам недостаточно, используйте объект StringBuilder, чтобы изменить отдельные символы «на месте», а затем создайте новую строку для сохранения результатов с помощью методов StringBuilder. В следующем примере предположим, что необходимо определенным образом изменить исходную строку, а затем сохранить результаты для дальнейшего использования:

Строки NULL и пустые строки

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

В отличие от пустых строк строка NULL не ссылается на экземпляр объекта System.String, поэтому любая попытка вызвать метод для строки NULL приводит к исключению NullReferenceException. Но вы можете использовать строки NULL в операциях объединения и сравнения с другими строками. В следующих примерах показаны случаи, в которых ссылка на строку NULL вызывает и не вызывает исключение:

Использование класса StringBuilder для быстрого создания строк

Операции со строками в .NET хорошо оптимизированы, и в большинстве случаев они не снижают производительность. Но в некоторых сценариях, например в сплошных циклах, которые выполняются сотни и тысячи раз, операции со строками могут повлиять на производительность. Класс StringBuilder создает строковый буфер, который ускоряет работу, если программа выполняет много операций над строками. Строка StringBuilder также позволяет заново присваивать отдельные символы, что не поддерживает встроенный строковый тип данных. Например, этот код изменяет содержимое строки без создания новой строки:

В этом примере объект StringBuilder используется для создания строки из набора числовых типов:

Строки, методы расширения и LINQ

Так как тип String использует IEnumerable , вы можете применять методы расширения, определенные для строк в классе Enumerable. Чтобы избежать визуального загромождения, эти методы исключены из IntelliSense для типа String, но все равно доступны. Можно также использовать выражения запроса LINQ в строках. Дополнительные сведения см. в документации по LINQ и строкам.

Источник

Оцените статью