Преобразовать int в строку с ведущими нулями

У меня есть целое число, которое я хочу преобразовать в строку с ведущими нулями.

Итак, у меня есть 1, и я хочу превратить его в 01. 14 должно превратиться в 14, а не в 014.

Я старался:

let str = (string 1).PadLeft(2, '0') // visual studio suggested this one
let str = (string 1).PadLeft 2 '0'
let str = String.PadLeft 2 '0' (string 1)

Но ни то, ни другое не работает :( Когда я ищу что-то подобное с помощью F #, я получаю что-то с printfn, но я не хочу печатать на стандартный вывод:/

Отказ от ответственности: это мой первый F#


person Snæbjørn    schedule 01.11.2016    source источник


Ответы (1)


Вы можете использовать sprintf, который возвращает строку вместо вывода на стандартный вывод. Любая из функций print, начинающихся с s, возвращает строку.

Используйте %0i для заполнения нулями. Добавьте длину предполагаемой строки между 0 и i. Например, чтобы дополнить четырьмя нулями, вы можете использовать:

sprintf "%04i" 42

// returns "0042"
person Chad Gilbert    schedule 01.11.2016
comment
Я полностью пропустил часть с s перед print :) - person Snæbjørn; 01.11.2016
comment
По какой-то причине %0i не работает, а %02i прекрасно работает - person Snæbjørn; 01.11.2016
comment
@Snæbjørn, %0i не имеет смысла, потому что, чтобы дополнить строку нулями, вам нужно знать, до какой длины она должна быть дополнена. - person bytebuster; 01.11.2016
comment
Как мне заполнить строку из параметра функции? sprintf "%0[dynamic int param]i" 42. - person Jecoms; 30.09.2019
comment
@Jecoms — для заполнения переменного количества символов вы можете использовать String .PadLeft(...) как в (string 42).PadLeft(4, '0') - person Chad Gilbert; 02.10.2019