C# для начинающих: Работа со строками и файлами

Работа со строками

Создадим строку:

string myString = "Hello";

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

myString += " world!"; 

Строка — массив символов. Ранее в некоторых языках программирования (например, в некоторых ОС) типа данных string не существовало, был только char. string — гибридный тип, массив символов, объединённый в строку. Доступ к любому элементу (символу):

Console.WriteLine(myString[1]); // Выведет 'e'

Индексация с нуля. Используем свойства массивов, например, Length:

Console.WriteLine(myString.Length); // Выведет длину строки

Дополнительные функции для строк

Функции, аналогичные операциям с массивами (добавление, обрезка):

string word = "word";
word = string.Concat(word, "!!"); // Добавление подстроки
Console.WriteLine(word); // Выведет "word!!"

int compareResult = string.Compare(word, "word!"); // Сравнение строк
Console.WriteLine(compareResult); // Выведет 1 (строки не равны)

string.Compare() возвращает:

  • 0, если строки равны.
  • 1, если первая строка длиннее второй.
  • -1, если первая строка короче второй.

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

Разбиение строки на массив строк:

string apple = "Alex,Bob,John";
string[] names = apple.Split(','); 
foreach (string name in names)
{
    Console.WriteLine(name);
}

Split() разбивает строку по указанному символу (запятой), создавая массив строк.

Обратная операция — объединение массива строк в одну с помощью Join():

string joinedString = string.Join(" ", names); // Объединение элементов массива через пробел
Console.WriteLine(joinedString); // Выведет "Alex Bob John"

Функции обработки строк: Trim(), Substring(), StartsWith(), ToLower(), ToUpper()

string text = "   Hello world!   ";
Console.WriteLine(text.Trim()); // Удаляет пробелы в начале и конце строки

Console.WriteLine(text.Substring(2, 5)); // Возвращает подстроку с 2 по 6 символ (включительно)

Console.WriteLine(text.StartsWith("Hello")); // Проверяет, начинается ли строка с "Hello"

Console.WriteLine(text.ToLower()); // Приводит строку к нижнему регистру

Console.WriteLine(text.ToUpper()); // Приводит строку к верхнему регистру

Работа с файлами

Подключаем библиотеку System.IO:

using System.IO;

Создаём объект FileStream для записи в файл:

string filePath = "info.txt";
using (FileStream stream = new FileStream(filePath, FileMode.OpenOrCreate))
{
    Console.WriteLine("Введите текст:");
    string text = Console.ReadLine();
    byte[] array = System.Text.Encoding.Default.GetBytes(text);
    stream.Write(array, 0, array.Length); 
}

FileMode.OpenOrCreate создаст файл, если его нет, или откроет существующий для записи. Текст преобразуется в массив байтов перед записью.

Чтение из файла

Чтение данных из файла:

using (FileStream stream1 = File.OpenRead(filePath))
{
    byte[] array = new byte[stream1.Length];
    stream1.Read(array, 0, array.Length);
    string textFromFile = System.Text.Encoding.Default.GetString(array);
    Console.WriteLine(textFromFile);
}

File.OpenRead() открывает файл для чтения. Данные считываются в массив байтов, затем преобразуются в строку. Работа с файлами происходит в изолированной области (using), гарантируя корректное закрытие файла.

Рассмотрены основные методы работы со строками и файлами в C#. Использование изолированных областей (using) при работе с файлами необходимо для корректного управления ресурсами.

Что будем искать? Например,программа