Страницы

Поиск по вопросам

вторник, 28 января 2020 г.

Создание читабельной строки из крупного числа (6485251 => “6.485.251”)

#c_sharp #строки


Есть потребность выводить на экран крупные числа, но сделать это нужно так, чтобы
юзер мог легко воспринимать это число, то есть добавить разделитель между каждыми 3-мя
цифрами в числе Например: (6485251 --> "6.485.251").

Как можно реализовать метод, который будет принимать, допустим переменную типа "int"
и возвращать "string" с разделителями?
    


Ответы

Ответ 1



String.Format("{0:n}", 6485251 ); //вывод: 6,485,251.00 string.Format("{0:n0}", 6485251); //вывод: 6.485.251

Ответ 2



int f = 1234567; string s = f.ToString("N3"); В таком форматировании разряды будут разделяться пробелами.

Ответ 3



Даешь Linq-монстра! (про эффективность алгоритмов тут нечего говорить, он прекрасен)) string ToStringWithSeparator(int num, string separator) { return Enumerable.Range(0, 10) .Select(x => new string(num.ToString() .Reverse() .Skip(x * 3) .Take(3) .Reverse() .ToArray())) .Reverse() .SkipWhile(x => string.IsNullOrWhiteSpace(x)) .Reverse() .Aggregate(string.Empty, (x, a) => $"{a}{separator}{x}"); } Как проверить Console.WriteLine(ToStringWithSeparator(6485251, " ")); Вывод 6 485 251

Ответ 4



Можно написать свой метод разделения целых чисел по разрядам, подобный этому. static string Separate(int number) { var strList = new List(); while (number != 0) { var t = number % 1000; number /= 1000; strList.Add(t.ToString()); } strList.Reverse(); // Разделитель задайте сами var preparedNumber = String.Join(" ", strList.ToArray()); return preparedNumber; }

Комментариев нет:

Отправить комментарий