Carriage Return / Line Feed di .Net Resource File (App_GlobalResources)

94

Saya menyimpan beberapa teks dalam satu App_GlobalResources.resxfile.

Teks harus multi-baris dan saya harus berisi feed baris. Namun, ketika saya membaca isinya, semua baris feed hilang ( \r\ndicetak, bukan sebagai CRLF 10 13karakter kontrol).

Saya tahu bahwa saya dapat mengatasi ini dengan mengganti kembali \r\n(atau apa pun dalam hal ini) kembali ke CRLF ketika saya membaca isinya, tetapi saya bertanya-tanya mengapa file resx yang ditargetkan dengan teks ini mengabaikan karakter kontrol - dan CRLF agak penting - dan jika ada yang tahu apakah ada pengaturan atau sesuatu yang memungkinkan ini bekerja secara alami.

Alex
sumber

Jawaban:

161

Saya menggunakan VB.NET Express Edition untuk menguji ini.

Di editor sumber daya (tempat Anda dapat menentukan nama sumber daya dan konten string), letakkan konten string yang dipisahkan dengan Shift+ Enter.

Katakanlah Anda ingin mengetik

hello  
world

Ketik "halo" diikuti dengan Shift+ Enterdan "dunia".

Jika Anda melihat file Resources.Resx (yang merupakan file xml), Anda dapat melihat bahwa file tersebut membuat node dengan atribut xml:space="preserve" .

Opsi kedua

Selain itu, Anda dapat mengedit Resources.resx secara manual dan mengubah konten menjadi bagian CDATA.

Asumsikan bahwa Anda memiliki string bernama "contoh". Cari di Resources.resx dan ubah konten agar memiliki bagian CDATA di dalamnya agar tidak memiliki nilai yang sederhana.

misalnya

<data name="example">
<![CDATA[
hello
world
1
2   3
4
]]>  </data>
shahkalpesh.dll
sumber
3
Saya menemukan jawaban ini mencari cara untuk menyisipkan \ttab. Saya harus benar-benar masuk ke pengaturan studio visual untuk tab di file xml dan mematikan opsi "tab sebagai spasi" (yang menggantikan karakter tab dengan sejumlah spasi) sehingga saya bisa mendapatkan karakter tab literal ke dalam string saya.
Jon O
Fantastis ... tidak tahu itu mungkin! :)
Leniel Maccaferri
Lebih baik terlambat daripada tidak sama sekali ... Setelah saya berasumsi \ n adalah cara yang benar. Hanya 50 perubahan yang harus dilakukan!
Andez
Menyelamatkan hariku. Terima kasih!!
xyzWty
35

Gunakan Shift+ Enteruntuk menyisipkan baris baru.

kebiruan
sumber
4
siapa sangka. mencoba ctrl + enter, alt + enter. konsistensi MS!
Illuminati
18

Saat menggunakan antarmuka desainer resx

  • Jika Anda benar-benar mengetik teks ke dalam file resx maka Anda akan menggunakan

    Shift+Enter

    sebagaimana dicatat dalam jawaban lain.

  • Jika Anda menempelkan teks di resx - Visual Studio akan menempelkan teks dalam format yang sama seperti sebelumnya (termasuk pemutusan garis / multiline).

Saat membuka file resx dalam format XML

(cari file resx menggunakan find and replace .. ketika Anda mengklik file dari panel 'find results', VS akan membuka file resx dalam XML)

Di sini Anda dapat menambahkan teks sesuka Anda (dalam tag nilai) dan pemformatan akan dipertahankan.

Danield
sumber
17

Nah, yang berhasil dalam situasi saya adalah menggunakan <br>tag seperti ini:

A text with a line break <br> and this goes in the second line.

Ada posting dengan info lebih lanjut di sini: Menempatkan jeda baris di file sumber daya resx

Jika Anda kebetulan menggunakan mesin tampilan Razor dengan ASP.NET MVC, Anda perlu menggunakan:

@Html.Raw(ResourceFile.ResourceString)

sehingga mencetak <br>sebagai HTML.

Leniel Maccaferri
sumber
10
Ini akan berfungsi jika string sumber daya Anda ditujukan untuk digunakan sebagai HTML. Namun jika string akan digunakan dengan cara non-HTML (sebagai string untuk tooltip atau dialog pesan kesalahan di aplikasi desktop misalnya), Anda hanya akan mendapatkan <br> di string Anda.
Peter Meyer
0

Anda dapat mengedit *.resxfile dengan editor teks untuk menambahkan penggalan .

Anda dapat melakukannya bahkan dalam Visual Studio:

  • Klik kanan ke file sumber daya
  • Klik untuk Open with ...
  • Pilih XML (Text) Editor with Encoding
  • Klik OK
  • Klik OK lagi untuk pemilihan encoding (deteksi otomatis)
  • Telusuri nama (kunci) teks Anda (misalnya "MY_TEXT")
  • Edit teks di dalam <value>tag. Untuk pemutusan baris cukup tekan Enter. Catatan: Hapus spasi di depan setelah pemutusan baris. Jika tidak, mereka juga akan dimasukkan.

Diuji dengan Visual Studio 2017.

Contoh:

  <data name="MY_TEXT" xml:space="preserve">
    <value>Line 1
Line 2
Line 3</value>
  </data>
Kecantikan
sumber