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


97

ฉันเก็บข้อความหลายรายการไว้ในApp_GlobalResources.resxไฟล์

ข้อความต้องเป็นหลายบรรทัดและฉันต้องมีฟีดบรรทัด อย่างไรก็ตามเมื่อฉันอ่านเนื้อหาฟีดบรรทัดทั้งหมดจะหายไป ( \r\nถูกพิมพ์ไม่ใช่เป็นCRLF 10 13อักขระควบคุม)

ฉันรู้ว่าฉันสามารถแก้ไขปัญหานี้ได้โดยการแทนที่\r\n(หรืออย่างอื่นสำหรับเรื่องนั้น) กลับไปที่ CRLF เมื่อฉันอ่านเนื้อหา แต่ฉันสงสัยว่าทำไมไฟล์ resx ที่กำหนดเป้าหมายด้วยข้อความอย่างชัดเจนเหล่านี้จึงเพิกเฉยต่ออักขระควบคุมและ CRLF จึงมีความสำคัญ - และถ้าใครรู้ว่ามีการตั้งค่าหรือบางอย่างที่จะทำให้สิ่งนี้ทำงานได้อย่างเป็นธรรมชาติ

คำตอบ:


163

ฉันใช้ VB.NET Express Edition เพื่อทดสอบสิ่งนี้

ในการแก้ไขทรัพยากร (ซึ่งคุณสามารถระบุชื่อของเนื้อหาทรัพยากรและสตริง) ใส่เนื้อหาสตริงคั่นด้วย+ShiftEnter

ให้บอกว่าคุณต้องการพิมพ์

hello  
world

พิมพ์ "hello" ตามด้วยShift+ Enterและ "world"

ถ้าคุณดูที่ไฟล์ Resources.resx (ซึ่งเป็นไฟล์ XML) xml:space="preserve"คุณจะเห็นว่ามันจะสร้างโหนดที่มีแอตทริบิวต์

ตัวเลือกที่ 2

นอกจากนี้คุณสามารถแก้ไข Resources.resx ด้วยตนเองและแก้ไขเนื้อหาให้อยู่ในส่วน CDATA

สมมติว่าคุณมีสตริงชื่อ "example" ค้นหาใน Resources.resx และเปลี่ยนเนื้อหาให้มีส่วน CDATA อยู่ข้างในโดยเทียบกับการมีค่าอย่างง่าย

เช่น

<data name="example">
<![CDATA[
hello
world
1
2   3
4
]]>  </data>

3
ฉันพบคำตอบนี้กำลังมองหาวิธีแทรก\tแท็บ ฉันต้องเข้าไปในการตั้งค่าของ Visual Studio สำหรับแท็บในไฟล์ xml และปิดตัวเลือก "แท็บเป็นช่องว่าง" (ซึ่งจะแทนที่อักขระแท็บด้วยช่องว่างจำนวนหนึ่งแทน) เพื่อที่ฉันจะได้รับอักขระแท็บตามตัวอักษรในสตริงของฉัน
จอนโอ

วิเศษมาก ... ไม่รู้ว่าเป็นไปได้! :)
Leniel Maccaferri

ดีกว่าไม่มาช้า ... หลังจากที่ฉันเดา \ n เป็นวิธีที่ถูกต้อง มีการเปลี่ยนแปลงเพียง 50 รายการเท่านั้น!
Andez

บันทึกวันของฉัน ขอขอบคุณ!!
xyzWty


18

สิ่งที่ได้ผลในสถานการณ์ของฉันคือการใช้<br>แท็กแบบนี้:

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

มีโพสต์พร้อมข้อมูลเพิ่มเติมที่นี่: การใส่เส้นแบ่งในไฟล์ทรัพยากร resx

หากคุณกำลังใช้ Razor view engine กับ ASP.NET MVC คุณต้องใช้:

@Html.Raw(ResourceFile.ResourceString)

เพื่อให้พิมพ์<br>เป็น HTML


10
สิ่งนี้จะใช้ได้หากสตริงทรัพยากรของคุณถูกกำหนดให้ใช้เป็น HTML แต่ถ้าต้องใช้สตริงในลักษณะที่ไม่ใช่ HTML (เช่นสตริงสำหรับคำแนะนำเครื่องมือหรือกล่องโต้ตอบข้อความแสดงข้อผิดพลาดในแอปเดสก์ท็อป) คุณจะได้รับ <br> ในสตริงของคุณ
Peter Meyer

ใช่ แต่คุณอาจต้องจัดรูปแบบให้เป็นเช่นนั้น<br/> โปรดสังเกตเครื่องหมายทับก่อนปิดแท็กเพื่อให้เป็นไปตาม XML (เนื่องจากแท็ก xml ทั้งหมดต้องมีแท็กปิด)
Arno 2501

18

เมื่อใช้อินเทอร์เฟซตัวออกแบบ resx

  • หากคุณกำลังพิมพ์ข้อความลงในไฟล์ resx จริงๆคุณจะใช้

    Shift+Enter

    ตามที่ระบุไว้ในคำตอบอื่น ๆ

  • หากคุณกำลังวางข้อความใน resx - Visual Studio จะวางข้อความในรูปแบบเดียวกับที่เป็นอยู่แล้ว (รวมถึงการแบ่งบรรทัด / หลายบรรทัด)

เมื่อเปิดไฟล์ resx ในรูปแบบ XML

(ค้นหาไฟล์ resx โดยใช้ find and replace .. เมื่อคุณคลิกไฟล์จากแผง 'find results' VS จะเปิดไฟล์ resx ใน XML)

ที่นี่คุณสามารถเพิ่มข้อความได้ตามต้องการ (ในแท็กค่า) และการจัดรูปแบบจะยังคงอยู่


0

เป็นไปได้ที่จะแก้ไข*.resxไฟล์ด้วยโปรแกรมแก้ไขข้อความเพื่อเพิ่มการแบ่งบรรทัด

คุณสามารถทำได้แม้ใน Visual Studio:

  • คลิกขวาที่ไฟล์ทรัพยากร
  • คลิกเพื่อ Open with ...
  • เลือก XML (Text) Editor with Encoding
  • คลิก OK
  • คลิกOKอีกครั้งเพื่อเลือกการเข้ารหัส (ตรวจหาอัตโนมัติ)
  • ค้นหาชื่อ (คีย์) ของข้อความของคุณ (เช่น "MY_TEXT")
  • แก้ไขข้อความภายใน<value>แท็ก Enterสำหรับการขึ้นบรรทัดใหม่เพียงแค่กด หมายเหตุ: ลบช่องว่างนำหน้าหลังการแตกบรรทัด มิฉะนั้นจะแทรกเข้าไปด้วย

ทดสอบด้วย Visual Studio 2017

ตัวอย่าง:

  <data name="MY_TEXT" xml:space="preserve">
    <value>Line 1
Line 2
Line 3</value>
  </data>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.