Dalam. NET saya dapat memberikan keduanya \r
atau \n
string literal, tetapi ada cara untuk memasukkan sesuatu seperti karakter "baris baru" seperti Environment.NewLine
properti statis?
c#
.net
line-breaks
Kapten Komik
sumber
sumber
Jawaban:
Nah, opsi sederhana adalah:
string.Format
:Rangkaian string:
Interpolasi string (dalam C # 6 dan di atas):
Anda juga dapat menggunakan \ n di mana-mana, dan mengganti:
Perhatikan bahwa Anda tidak dapat menjadikan ini string konstan , karena nilai
Environment.NewLine
hanya akan tersedia pada waktu eksekusi.sumber
Environment.NewLine
? Justru sebaliknya, itu adalah praktik yang baik untuk menggunakannyaJika Anda menginginkan string const yang berisi Environment.NewLine di dalamnya, Anda dapat melakukan sesuatu seperti ini:
EDIT
Karena ini dalam string const maka dilakukan dalam waktu kompilasi karena itu adalah interpretasi kompiler dari baris baru. Sepertinya saya tidak dapat menemukan referensi yang menjelaskan perilaku ini, tetapi, saya bisa membuktikannya berfungsi sebagaimana dimaksud. Saya mengkompilasi kode ini pada Windows dan Ubuntu (dengan Mono) kemudian dibongkar dan ini adalah hasilnya:
Seperti yang Anda lihat, di baris baru Windows ditafsirkan sebagai \ r \ n dan di Ubuntu sebagai \ n
sumber
sumber
first + Environment.NewLine + second
yang lebih efisien dan (IMO) lebih mudah dibaca?String.Format
akan menghasilkan 1 string sekaligus (tapi secara internal agak lambat karena rangkaian budaya tertentu, dll), sementara rangkaian string - 1 menghasilkan +1 sementara, kan?String.Concatenate
, yang secara langsung membangun hanya satu string keluaran (IIRC, jika stringnya literal, penggabungannya dilakukan dalam kompiler."a"+b+"c"+d
, dll) dengan kinerja sama dengan satu? Atau baru saja dikonversi keString.Concatenate(a,b,c,d,etc)
, kan?string.Format
dalam komentar. Rangkaian string tidak akan menghasilkan string sementara, karena kompiler akan memanggilstring.Concat(first, Environment.NewLine, second)
.Satu lagi cara penempatan yang mudah dari Environment.NewLine dalam format string. Idenya adalah untuk membuat metode ekstensi string yang memformat string seperti biasa tetapi juga menggantikan {nl} dalam teks dengan Environment.NewLine
Pemakaian
Kode
Catatan
Jika Anda ingin ReSharper menyorot parameter Anda, tambahkan atribut ke metode di atas
[StringFormatMethod ("format")]
Implementasi ini jelas kurang efisien daripada hanya String.Format
Mungkin satu, yang tertarik pada pertanyaan ini akan tertarik pada pertanyaan berikutnya juga: Named string formating in C #
sumber
sumber
sumber
Environment.NewLine
- lihat jawaban lainnya.const string
versi .net yang lebih baru memungkinkan Anda untuk menggunakan $ di depan literal yang memungkinkan Anda untuk menggunakan variabel di dalam seperti berikut:
sumber
Jika Anda benar-benar menginginkan string Baris Baru sebagai konstanta, maka Anda dapat melakukan ini:
Pengguna kata kunci hanya baca dalam C # berarti bahwa variabel ini hanya dapat ditetapkan satu kali. Anda dapat menemukan dokumentasi di sini . Ini memungkinkan deklarasi variabel konstan yang nilainya tidak diketahui sampai waktu eksekusi.
sumber
Saya lebih suka "cara pythonic"
sumber
Jika Anda bekerja dengan aplikasi Web, Anda dapat mencoba ini.
sumber
Jika saya mengerti pertanyaan: Pasangan
"\r\n"
untuk mendapatkan baris baru di bawah ini dalamtextbox
. Contoh saya berhasil -Sebuah jawaban yang khas bisa
s1
s2
ditext box
jenis gaya didefinisikan menggunakan.sumber
Di sini, Environment.NewLine tidak bekerja.
Aku meletakkan " < br / > " dalam sebuah string dan bekerja.
Ex:
sumber