ยกเว้นเครื่องหมายคำพูดคู่ในสตริง


173

สามารถใช้เครื่องหมายอัญประกาศคู่ดังนี้:

string test = @"He said to me, ""Hello World"". How are you?";

แต่สิ่งนี้เกี่ยวข้องกับการเพิ่มอักขระ"ลงในสตริง มีฟังก์ชั่น C # หรือวิธีอื่นในการยกเว้นเครื่องหมายคำพูดคู่เพื่อไม่จำเป็นต้องเปลี่ยนสตริงหรือไม่?


5
คุณสามารถใช้ \ "Hello World \" แบบนี้ได้
Pandian

1
ผลลัพธ์ที่คุณต้องการคืออะไร "" กลายเป็น "ในสตริงตัวอักษร
Roel

คำถามที่คล้ายกันสำหรับ C / C ++ (เนื่องจากอาจเป็นเครื่องมือค้นหาอันดับต้น ๆ ): ฉันจะใส่เครื่องหมายอัญประกาศเป็นสตริงได้อย่างไร
Peter Mortensen

คำตอบ:


226

เลขที่

ทั้งใช้ตัวอักษรสตริงคำต่อคำตามที่คุณมีหรือหลบหนีการ"ใช้เครื่องหมายทับขวา

string test = "He said to me, \"Hello World\" . How are you?";

สตริงไม่ได้เปลี่ยนแปลงในกรณีใดกรณีหนึ่ง - มีการหลบหนี เดียว"ในนั้น นี่เป็นเพียงวิธีที่จะบอก C # ว่าตัวละครเป็นส่วนหนึ่งของสตริงและไม่ใช่ตัวยุติสตริง


81

คุณสามารถใช้แบ็กสแลชได้ทั้งสองทาง

string str = "He said to me, \"Hello World\". How are you?";

มันพิมพ์;

He said to me, "Hello World". How are you?

ซึ่งเป็นสิ่งเดียวกันกับพิมพ์;

string str = @"He said to me, ""Hello World"". How are you?";

DEMOนี่คือ

" ยังคงเป็นส่วนหนึ่งของสตริงของคุณ

ตรวจสอบEscape SequencesและออกString literalsจาก MSDN


18

ใน C # คุณสามารถใช้เครื่องหมายแบ็กสแลชเพื่อใส่อักขระพิเศษลงในสตริงของคุณ ตัวอย่างเช่นในการใส่ "คุณต้องเขียน \" มีอักขระจำนวนมากที่คุณเขียนโดยใช้แบ็กสแลช: แบ็กสแลชที่มีตัวเลข:

  • \ 000 null
  • Backspace \ 010
  • \ 011 แท็บแนวนอน
  • \ 012 บรรทัดใหม่
  • \ 015 การคืนรถ
  • \ 032 ตัวแทน
  • \ 042 เครื่องหมายคำพูดคู่
  • \ 047 เครื่องหมายคำพูดเดี่ยว
  • \ 134 แบ็กสแลช
  • สำเนียงที่หลุมฝังศพ 140

แบ็กสแลชที่มีอักขระ othe

  • \ a เบลล์ (แจ้งเตือน)
  • \ b Backspace
  • \ f จัดรูปแบบ
  • \ n บรรทัดใหม่
  • รับคืนรถ
  • \ t แท็บแนวนอน
  • \ v แท็บแนวตั้ง
  • \ 'เครื่องหมายคำพูดเดี่ยว
  • \ "เครื่องหมายคำพูดคู่
  • \ แบ็กสแลช
  • \? เครื่องหมายคำถามตามตัวอักษร
  • \ ooo อักขระ ASCII ในรูปแบบเลขฐานแปด
  • \ x hh อักขระ ASCII ในรูปแบบเลขฐานสิบหก
  • \ x hhhh อักขระ Unicode ในรูปแบบเลขฐานสิบหกหากลำดับการหลบหนีนี้ถูกใช้ในค่าคงที่อักขระกว้างหรือสตริงอักษร Unicode ตามตัวอักษร ตัวอย่างเช่น WCHAR f = L '\ x4e00' หรือ WCHAR b [] = L "ตัวอักษรจีนสำหรับหนึ่งคือ \ x4e00"

6

คุณกำลังหนีความเข้าใจผิดไป

"อักขระพิเศษเป็นส่วนหนึ่งของตัวอักษรสตริง; พวกเขาจะถูกตีความโดยคอมไพเลอร์เป็นหนึ่งเดียว "

มูลค่าที่แท้จริงของสตริงของคุณยังคงHe said to me , "Hello World".How are you ?เป็นตามที่คุณจะเห็นว่าคุณพิมพ์ได้ที่รันไทม์


4

โปรดอธิบายปัญหาของคุณ คุณพูด:

แต่สิ่งนี้เกี่ยวข้องกับการเพิ่มอักขระ "ลงในสตริง

ปัญหาคืออะไร คุณไม่สามารถพิมพ์ได้string foo = "Foo"bar"";เพราะจะทำให้เกิดข้อผิดพลาดในการคอมไพล์ สำหรับส่วนที่เพิ่มในเงื่อนไขขนาดสตริงที่ไม่เป็นจริง:

@"""".Length == "\"".Length == 1
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.