Центр строки ржавчины в ряде символов


Я читал о format! и всех вариантах форматирования и увидел, что есть прекрасный способ центрировать строку текста, используя либо <, ^ или >. Вместо того чтобы центрировать строку в пробелах, можно ли центрировать ее в символе?

{:^32} // Centers it nicely in 32 characters of whitespace

Я думал примерно так:

{:^32'c'} // But this does not work
Я перепробовал почти все мыслимые способы, кроме тех, которые кажутся слишком безумными. Но, к счастью, есть переполнение стека !

Возможно ли центрировать строку с помощью чисел для достижения чего-то вроде следующего?

--------так что это потрясающе--------

1 2

1 ответ:

Можно ли центрировать строку с помощью чисел для достижения чего-то вроде следующего?

Да, вроде того, если вы действительно имеете в виду "что-то вроде"...

fn main() {
    let s = format!("{:-^30}", "SO is AWESOME");
    assert_eq!(s, "--------SO is AWESOME---------");
    //             ^-- 8 here           ^-- 9 here
}

Ссылаясь на синтаксис форматирования , Вот соответствующие части:

format_spec := [[fill]align][sign]['#']['0'][width]['.' precision][type]
fill := character
align := '<' | '^' | '>'
width := count

Задаем заливку (-), выравнивание (^ / центр), а ширина (30). Однако строка имеет ширину 13 единиц, поэтому, чтобы заполнить ее до 30 единиц, заполнение должно быть больше с одной стороны.