ในกรณีของสตริงต่อไปนี้ที่จะแยกวิเคราะห์
ford mustang,10,blue~~?bugatti veyron,13,black
ฉันต้องการแทนที่~~?
ด้วยcarriage return
แทนที่ด้วย\n
เพียงแค่เพิ่มสตริง"\n"
สิ่งนี้สามารถทำได้?
ในกรณีของสตริงต่อไปนี้ที่จะแยกวิเคราะห์
ford mustang,10,blue~~?bugatti veyron,13,black
ฉันต้องการแทนที่~~?
ด้วยcarriage return
แทนที่ด้วย\n
เพียงแค่เพิ่มสตริง"\n"
สิ่งนี้สามารถทำได้?
คำตอบ:
ตรวจสอบให้แน่ใจว่าได้เลือก "ใช้: นิพจน์ปกติ" ในกล่องโต้ตอบค้นหาและแทนที่:
โปรดทราบว่าสำหรับ Visual Studio 2010 สิ่งนี้จะไม่ทำงานในส่วนขยาย "Quick Find" เครื่องมือค้นหาVisual Studio (ในการปรับปรุงเดือนกรกฎาคม 2554) คุณจะต้องใช้กล่องโต้ตอบค้นหาและแทนที่แบบเต็ม (ใช้ Ctrl + Shift + H หรือแก้ไข -> ค้นหาและแทนที่ -> แทนที่ในไฟล์) และเปลี่ยนขอบเขตเป็น "เอกสารปัจจุบัน"
\)
เมื่อมีนิพจน์ทั่วไปอยู่ ...
?
ตัวละครจะต้องมีการหลบหนีใน Regex เพราะมันหมายความว่าองค์ประกอบที่ก่อนหน้านี้จะเป็นตัวเลือก ดังนั้นข้อความ "ค้นหาสิ่งที่" ที่ถูกต้องคือ~~\?
มีเครื่องหมายคำถามที่หลบหนีโดยแบ็กสแลช คำตอบที่คุณให้ไว้กับข้อความตัวอย่างเพราะมันจะหาตัวหนอนตัวที่สองและกินมันอย่างตะกละตะกลาม แต่ถ้าตัวหนอนตัวเดียวมีอยู่ในข้อความทุกที่มันจะถูกแทนที่ด้วยบรรทัดใหม่อย่างไม่เหมาะสม
นอกจากนี้คุณยังสามารถลอง\x0d\x0a
ในกล่อง "แทนที่ด้วย" พร้อมกับ "ใช้การแสดงออกปกติ" ที่ทำเครื่องหมายไว้เพื่อรับการขึ้นบรรทัดใหม่ + บรรทัดการป้อนโดยใช้ Visual Studio Find / Replace การใช้\n
(ตัวดึงข้อมูลบรรทัด) เหมือนกับ\x0a
หากคุณตั้งค่าสถานะ "ใช้การแสดงออกปกติ" จะมีการแปล \ n แต่โปรดจำไว้ว่าคุณจะต้องแก้ไขข้อความค้นหาของคุณเพื่อให้เป็นมิตรกับ regexp ในกรณีของคุณควรจะหนีแบบนี้ "\ ~ \ ~ \?" (ไม่มีเครื่องหมายคำพูด)
หากคุณต้องการหลีกเลี่ยงความยุ่งยากในการหลีกเลี่ยงอักขระพิเศษในสตริงการค้นหาและการแทนที่ของคุณเมื่อใช้นิพจน์ทั่วไปให้ทำตามขั้นตอนต่อไปนี้:
โปรดทราบว่าแม้ว่าคุณต้องการพิชที่ตรงกันด้วยตนเองสำหรับการค้นหาและแทนที่ครั้งแรกคุณสามารถใช้ "replace all" สำหรับสามขั้นตอนสุดท้ายได้อย่างปลอดภัย
ตัวอย่างเช่นหากคุณต้องการแทนที่สิ่งนี้:
public IFoo SomeField { get { return this.SomeField; } }
กับที่:
public IFoo Foo { get { return this.MyFoo; } }
public IBar Bar { get { return this.MyBar; } }
คุณจะทำการทดแทนดังต่อไปนี้:
public IFoo SomeField { get { return this.SomeField; } }
→ XOXOXOXO
( ปิด regex )XOXOXOXO
→ XOXOXOXO\nHUHUHUHU
(regex บน )XOXOXOXO
→ public IFoo Foo { get { return this.MyFoo; } }
( ปิด regex )HUHUHUHU
→ public IFoo Bar { get { return this.MyBar; } }
( ปิด regex )คุณสามารถใช้Multiline Search and Replace ในแมโคร Visual Studioซึ่งให้ GUI ที่ดีสำหรับงาน