fmt.Println("...")
で、シェルの中心整列で文字列を印刷できますか?fmt.Printの方法( "中央に印刷する")
答えて
このコードは、シェルの幅が既知の値である限り、テキストの中央を管理します。それはかなり完璧ではありませんが、私はそれが助けてくれることを願っています。
これを分解すると、右と左に書式設定文字列を生成する2ビットのコードがあります。
fmt.Sprintf("%%-%ds", w/2) // produces "%-55s" which is pad left string
fmt.Sprintf("%%%ds", w/2) // produces "%55s" which is right pad
だから、最終Printf
文が
fmt.Printf("%-55s", fmt.Sprintf("%55s", "my string to centre"))
完全なコード次のようになります。
s := " in the middle"
w := 110 // shell width
fmt.Printf(fmt.Sprintf("%%-%ds", w/2), fmt.Sprintf(fmt.Sprintf("%%%ds", w/2),s))
は以下を生成します:
in the middle
リンク地面を再生するには:この長い答え質問へのアップデートとしてplay
私は見ました。しかし、少し "%% - %ds"を説明できますか? Docは '%% \tはリテラルのパーセント記号です。価値を消費する」とはどういう意味ですか? '%dは数字です。 – sensorario
フォーマット文字列を生成するためのコードのより良い説明で更新されました。 – miltonb
私は文字列 's'の幅を考慮していないので、ソリューションコードにバグがあると思います。変更された遊び場のコードは、https://play.golang.org/p/8L5IfEIKSSを参照してください。私は、以下の私の答えに示すように、最初の 'w/2'を' w'に、2番目を '(w + len(s))/ 2'に置き換える必要があると思います。 – PaSTE
、@miltonbによって掲示ソリューションはfmt
パッケージから*
表記を使用することによって大幅に改善することができます。 the package documentationから:
のprintf、sprintfの、とfprintfのは、デフォルトの動作では、呼び出しで渡された連続した引数をフォーマットするために、各 フォーマットする動詞です。 しかし、動詞の直前の表記[n]は、 がn番目の1つの索引付き引数が代わりにフォーマットされることを示します。 同じ より前の表記は、幅または精度が '*'の場合、値を保持する引数 を選択します。括弧で囲まれた式[n]を処理した後で、 後続の動詞は、別の場合を除き、引数n + 1、n + 2などを使用します。
だから、同じ結果を達成するために、より簡潔な形式の文でfmt.Sprintf
通話のうち2つを置き換えることができます。
s := "in the middle"
w := 110 // or whatever
fmt.Sprintf("%[1]*s", -w, fmt.Sprintf("%[1]*s", (w + len(s))/2, s))
[n]表記に関する優れた追加は、それをより簡単にします。これは常に優れています。 – miltonb
- 1. 印刷時にdivを中央に揃える方法
- 2. Javaのコンソールの中央に三角形を印刷する方法は?
- 3. グリッドビューの印刷プレビューが中央グリッドではありません
- 4. javaで矩形を印刷する(中央に穴があります)
- 5. JAVAFX guiに印刷してコンソールに印刷する方法
- 6. 印刷中のエラー
- 7. 印刷中のダブルハッシュエントリ
- 8. Golangのテキストファイルにfmt.Print出力を取り込む方法
- 9. テーブルを印刷する印刷ボタンを挿入する方法
- 10. 各印刷ページでGridViewのヘッダーを印刷する方法
- 11. カルーセルスクロールの矢印キーをページの中央に配置する方法
- 12. 印刷方法をバイパスする方法
- 13. html CSSで印刷中にイメージを中央に配置するにはどうしたらいいですか?
- 14. 印刷方法バイナリツリー?
- 15. 印刷方法*キューブ
- 16. 印刷中にプリンタの設定を行う方法
- 17. 印刷プレビューページに印刷メディアのスタイルを読み込む方法
- 18. CefSharpでサイレントに印刷する方法
- 19. Documet.writeをブラウザに印刷する方法
- 20. 値を印刷中に防ぐには、キーのインデックスを印刷する - PHP
- 21. ディレクトリツリーの印刷方法は?
- 22. 方法からの印刷
- 23. アレイの印刷方法は?
- 24. xpathパーサーの印刷方法
- 25. Extjsウィンドウの印刷方法
- 26. データの印刷方法
- 27. 出力の印刷方法
- 28. WebViewの印刷方法は?
- 29. スターパターンの印刷方法は?
- 30. ファイルの印刷方法C#
シェルの幅を知っていますか、それともどのように動作させる必要があるのでしょうか? – miltonb
これはあなたに幅と高さを伝えることができます:http://stackoverflow.com/questions/263890/how-do-i-find-the-width-height-of-a-terminal-window – miltonb
@miltonb、あなたのリンクはbashのために...私は行くからbashを使うことができますか? – sensorario