Apakah metode .NET String.Format memungkinkan penempatan string pada posisi tetap dalam string panjang tetap.
"String Goes Here" "String Goes Here" "String Goes Here"
Bagaimana ini dilakukan dengan menggunakan .NET?
Sunting - Saya telah mencoba Format / PadLeft / PadRight hingga mati. Mereka tidak bekerja. Saya tidak tahu kenapa. Saya akhirnya menulis fungsi saya sendiri untuk melakukan ini.
Sunting - Saya membuat kesalahan dan menggunakan titik dua alih-alih koma dalam format specifier. Seharusnya "{0,20}".
Terima kasih atas semua jawaban yang sangat bagus dan benar.
Jawaban:
Ini akan memberi Anda persis string yang Anda minta:
sumber
,
alih - alih:
seperti di semua format penggunaan lainnya?Yang pertama dan yang terakhir, setidaknya, dimungkinkan menggunakan sintaks berikut:
sumber
Pada Visual Studio 2015 Anda juga bisa melakukan ini dengan Interpolated Strings (ini adalah trik kompiler, jadi tidak masalah versi mana dari kerangka .net yang Anda targetkan).
sumber
Anda telah ditunjukkan
PadLeft
danPadRight
. Ini akan mengisi yang hilangPadCenter
.Catatan untuk diri sendiri: jangan lupa untuk memperbarui CV sendiri: "Suatu hari, saya bahkan memperbaiki kode Joel Coehoorn!" ;-D -Muncul
sumber
coba ini:
untuk bagian tengah dapatkan panjang tali dan lakukan padleft dan padright dengan karakter yang diperlukan
sumber
String.Format("{0,-length}", something)
tidak akan dikompilasi.Terima kasih atas diskusi, metode ini juga berfungsi (VB):
Ini adalah versi C #:
Untuk membantu pemahaman, firstpad variabel integer digunakan. s.PadLeft (firstpad) menerapkan (jumlah yang benar dari) spasi putih utama. PadRight paling kanan (yang diinginkanLength) memiliki ikatan yang lebih rendah selesai dengan menerapkan spasi putih tambahan.
sumber
Berikut adalah versi VB.NET yang saya buat, terinspirasi oleh jawaban Joel Coehoorn, suntikan Oliver, dan komentar shaunmartin:
Ini diatur sebagai ekstensi string, di dalam Modul Publik (cara Anda melakukan Ekstensi di VB.NET, sedikit berbeda dari C #). Perubahan kecil saya adalah bahwa itu memperlakukan string nol sebagai string kosong, dan itu bantalan string kosong dengan nilai lebar (memenuhi kebutuhan khusus saya). Semoga ini akan dikonversi dengan mudah ke C # untuk siapa saja yang membutuhkannya. Jika ada cara yang lebih baik untuk merujuk jawaban, suntingan, dan komentar yang saya sebutkan di atas, yang mengilhami posting saya, tolong beri tahu saya dan saya akan melakukannya - saya relatif baru dalam memposting, dan saya tidak tahu tinggalkan komentar (mungkin belum cukup perwakilan)
sumber
Saya memposting artikel CodeProject yang mungkin Anda inginkan.
Lihat: AC # way untuk pemformatan lebar dan gaya tidak langsung.
Pada dasarnya ini adalah metode, FormatEx, yang bertindak seperti String.Format, kecuali itu memungkinkan pengubah penyelarasan terpusat.
Berarti memusatkan nilai varArgs [0] dalam bidang lebar 10 karakter, miring ke kanan jika diperlukan ruang bantalan tambahan.
Berarti memusatkan nilai varArgs [0] dalam bidang 10 karakter lebar, condong ke kiri jika ruang bantalan tambahan diperlukan.
Sunting: Secara internal, ini adalah kombinasi dari Padelenter Joel dengan beberapa penguraian untuk merestrukturisasi format dan varArgs untuk panggilan ke String. Kesesuaian yang melakukan apa yang Anda inginkan.
-Jesse
sumber
sepertinya Anda menginginkan sesuatu seperti ini, yang akan menempatkan Anda pada titik tetap dalam string dengan panjang konstan:
perhatikan bahwa ini akan memiliki masalah jika mystring.length + leftbuffer melebihi totallength
sumber
sumber