2017-01-05 50 views
1

我已經在format!讀了所有的formatting options,看到有使用任何<^>居中文本字符串的一個美麗的方式。而不是將字符串置於空格中,是否有可能將其居中置於一個字符中?的多個字符中心鏽串

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

我的想法是這樣的:

{:^32'c'} // But this does not work 

我幾乎每一個可以想象的方式嘗試,除了那些看起來太瘋狂了。但幸運的是有堆棧溢出

是否可以使用數字居中字符串以實現類似以下內容?

-------- SO是真棒--------

+0

所以@Shepmaster正在糾正我的造型。 :-) –

+1

你會在[tag:rust]的大多數SO問題中找到我的手。我努力提供一個統一的風格,並提高每篇文章的語法,希望能夠使每一個問題和答案對那些後來的人都有用。 – Shepmaster

回答

4

是否有可能使用中心數量達到類似下面的字符串?

是的,那種,只要你真正的意思是 「像」 ......

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

參考formatting syntax,這裏的相關部分:

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

我們指定一個填充-),一個比對^ /中心)和一個寬度30)。然而,這個字符串的寬度是13個單位,所以爲了將它填充到30個單位,填充物的一面要大一些。

+0

這對我很好!當然,如果有時間的話,他們可以使用一個方法(或者對這個問題的函數),利用你的例子,總是用雙方給定字符的相同數量打印出居中的字符串。這不應該比一個小流量控制更遠。 :-) –