Присвоение переменной значение строки
Как в C# присвоить числовое значение переменной, записанное в строке?
Ответы (2 шт):
Для конвертаций (преобразований) в .NET используются такие методы:
int→string:TryFormat,Format,ToStringstring→int:TryParse,Parse
Примечание: Если имя метода выглядит как TryXXX, то он всегда возвращает bool: если ошибка, то false, иначе true.
Таким образом остаётся такой набор методов: Format, ToString, Parse (прочие методы рассматриваться не будут). Разберёмся с каждым по порядку.
Format: записываетint→Span<char>в виде строки.Span– это универсальный буфер: в нём можно хранить строку, массив и даже неуправляемый буфер.Span– это всего лишь ссылка на элемент исходного буфера + длина, т. е.
var span = str.AsSpan();
…не создаёт новый буфер. Поэтому но так важен. Ссылка #1, cсылка #2, если вы хотите подробнее узнать о Span.
ToStringпросто преобразуетint→string(возможно, вам когда-то давали задание: «Преобразуйте беззнаковое целочисленное число в строку»).Parseделает обратное, т. е.string/ReadOnlySpan<char>→int. Это то, что вам нужно.
Также методы Format и ToString имеют 2 аргумента: format и formatProvider. format – это, как не сложно догадаться, формат числа, т. е. нужно ли ставить пробелы м-ду каждыми 3-я цифрами, нужно ли указывать валюту, или это процент, и т. д. formatProvider – это поставщик форматера. Это сложно, поэтому просто знайте, что в него можно запихнуть нужную культуру. Например:
var num = 5;
var ruRU = new CultureInfo("ru-RU"); // русская культура
var enUS = new CultureInfo("en-US"); // американская культура
Console.WriteLine(num.ToString("C", ruRU)); // 5,00 ₽
Console.WriteLine(num.ToString("C", enUS)); // $5.00
Метод Parse также принимает 2 аргумента: style и formatProvider. Про 2-й вы уже знаете – повторяться не буду. Аргумент style указывает допущения для числа, т. е. может ли оно иметь те же пробелы, может ли оно быть 16-ричным, может ли иметь минус и т. д. Т. е. полная противоположность format.