Member 13631520 Ответов: 2

Как отформатировать строку с десятичной точкой через каждый 3-й символ....


Я новичок на этом сайте и c# (программист VB), поэтому, пожалуйста, простите любое мое невежество.

Мой вопрос заключается в том, что у меня есть строковое представление числа.

Это число может быть от 0 до 999999999999

Мне нужно представить строку всегда в формате 000.000.000.000

Например:

12567 будет 000.000.012.567
1379468 будет 000.001.379.468
4500078912 будет 004.500.078.912

И т.д.

Я перепробовал много методов, включая использование регулярных выражений, строкового формата и т. д. Кажется, ничего не работает.

Любая помощь будет очень признательна.

Спасибо.

Что я уже пробовал:

Частная Строку Исходная_строка;

OriginalString = "132456";

Строка.Формат(############,Оригинальная Строка);

.....

2 Ответов

Рейтинг:
16

OriginalGriff

Во-первых, не используйте строки для представления чисел: это Пита, когда вы хотите что-то сделать с ними позже. Всегда храните данные в соответствующем типе данных и преобразуйте их в этот тип как можно раньше, используя методы Parse, TryParse и / или TryParseExact (сообщая о проблемах пользователю по мере прохождения), а затем преобразуйте обратно в строку для представления как можно позже.
Дизайн "ранний вход" и "поздний выход" позволяет использовать информацию о локали и культуре пользователей, которая может быть недоступна во время обработки или при хранении этой информации.

Тогда это просто вопрос форматирования числа для вывода:

long x = 4500078912;
Console.WriteLine("{0:00#\\.###\\.###\\.###}", x);
string output = String.Format("{0:00#\\.###\\.###\\.###}", x);


Member 13631520

Здравствуйте, спасибо за ваш ответ.

Значение вводится в виде строки из одного из свойств ссылочного класса. Количество на самом деле вам только значение, соответствующее частоте. Однако вы правы, я должен реализовать его в своем коде как числовое значение, потому что мне придется использовать его позже математически для вычисления смещений. Странно, что автор DLL не выставил его как числовое значение свойства. Спасибо за совет. Это сэкономило мне время.

OriginalGriff

Всегда пожалуйста!

Рейтинг:
12

Thomas Daniels

Существует решение с использованием регулярных выражений:

string formatted = Regex.Replace(originalString, ".{3}", "$0.");