У мене є номер, який мені потрібно перетворити на рядок. Спочатку я використав це:
Key = i.ToString();
Але я усвідомлюю, що це сортується в дивному порядку, і тому мені потрібно прокласти це нулями. Як я міг це зробити?
У мене є номер, який мені потрібно перетворити на рядок. Спочатку я використав це:
Key = i.ToString();
Але я усвідомлюю, що це сортується в дивному порядку, і тому мені потрібно прокласти це нулями. Як я міг це зробити?
Відповіді:
Досить просто:
Key = i.ToString("D2");
D
означає "десятковий номер", 2
для кількості цифр для друку.
string.Format("D2", value)
ви отримаєте D2
вихід. це не працює. Ми повинні використовувати "{0:00}"
в цьому випадку.
string.Format("{0:D2}", value)
замість цього. Просто кажучи, string.Format("D2", ...)
це не замінить нічого, незважаючи ні на що, оскільки у вас немає заповнення місця.
value
це int. Якщо value
, наприклад, подвійний, це доведеться бутиstring.Format("{0:00}", value)
Див. Формат String у форматі C # для деяких прикладів використання String.Format
Насправді кращий приклад форматування int
String.Format("{0:00000}", 15); // "00015"
або використовувати String Interpolation :
$"{15:00000}"; // "00015"
Якщо ви хочете тримати його фіксованою шириною, наприклад 10 цифр, зробіть це так
Key = i.ToString("0000000000");
Замініть на скільки завгодно цифр.
i = 123
тоді це призведе до Key = "0000000123"
.
Оскільки про це ще ніхто не згадував, якщо ви використовуєте C # версії 6 або вище (тобто Visual Studio 2015), ви можете використовувати строкову інтерполяцію для спрощення коду. Тож замість використання string.Format(...)
ви можете просто зробити це:
Key = $"{i:D2}";
використання:
i.ToString("D10")
Див. Розділи Int32.ToString (MSDN) та рядки стандартного цифрового формату (MSDN).
Або використовувати String.PadLeft
. Наприклад,
int i = 321;
Key = i.ToString().PadLeft(10, '0');
Це призведе до 0000000321
. ХочString.PadLeft
для негативних чисел не вийшло.
Див. String.PadLeft (MSDN).
Зазвичай String.Format ("формат", об'єкт) є кращим перед object.ToString ("формат"). Тому
String.Format("{0:00000}", 15);
бажано,
Key = i.ToString("000000");
Спробуйте:
Key = i.ToString("000000");
Однак особисто я бачу, якщо ви не можете впорядкувати ціле число безпосередньо, а не представлення рядка.
Для інтерпольованих рядків:
$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"
Тут я хочу, щоб моє значення не обмежувалося чотиризначним, як якщо б воно було 1, воно повинне показуватись як 0001, якщо це 11, воно повинно показуватись як 0011 .. Нижче код.
reciptno=1;//Pass only integer.
string formatted = string.Format("{0:0000}", reciptno);
TxtRecNo.Text = formatted;//Output=0001..
Я реалізував цей код для отримання грошової квитанції №
int num=1;
string number=num.ToString().PadLeft(4, '0')
Вихід = "00001"
EDIT: Змінено на суму PadLeft