#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; }
Комментариев нет:
Отправить комментарий