string.Format () ให้“ สตริงอินพุตไม่อยู่ในรูปแบบที่ถูกต้อง”


115

ฉันทำอะไรผิดที่นี่?

string tmp = @"
    if (UseImageFiles) {
        vCalHeader += ""<td><img onmousedown='' src= '{0}cal_fastreverse.gif' width='13px' height='9' onmouseover='changeBorder(this, 0)' onmouseout='changeBorder(this, 1)' style='border:1px solid white'></td>\n""; //Year scroller (decrease 1 year)
        calHeight += 22;
    }";

string x = "xter";
tmp = string.Format(tmp, x);

ฉันเข้าใจ

สตริงอินพุตไม่อยู่ในรูปแบบที่ถูกต้อง

{0}เมื่อพยายามที่จะเปลี่ยนแปลง ฉันกำลังทำสิ่งนี้ใน C # และ WinForms

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

แก้ไขเคล็ดลับที่ฉันได้รับ:

ตรวจสอบว่าอาร์กิวเมนต์วิธีการของคุณอยู่ในรูปแบบที่ถูกต้อง เมื่อแปลงสตริงเป็นวันที่และเวลาให้แยกวิเคราะห์สตริงเพื่อนำวันที่ออกก่อนที่จะใส่ตัวแปรแต่ละตัวลงในออบเจ็กต์ DateTime

คำตอบ:


304

string.Format()ถือว่า '{' หรือ '}' แต่ละตัวเป็นส่วนหนึ่งของตัวยึดตำแหน่ง (เช่น '{0}' ที่คุณใช้อยู่แล้ว) คุณต้องหลีกเลี่ยงการเกิดตามตัวอักษรแต่ละครั้งโดยการเพิ่มเป็นสองเท่า

ดังนั้นในกรณีของคุณให้ทำ:

 string tmp = @"
    if (UseImageFiles) {{
        ...
    }}";

4
ขอบคุณ! ข้อความแสดงข้อผิดพลาด "สตริงอินพุตไม่อยู่ในรูปแบบที่ถูกต้อง" ไม่เป็นประโยชน์กับฉันเลย ฉันคิดว่าพารามิเตอร์ตัวหนึ่งของฉันเป็นโมฆะหรืออะไรบางอย่าง
styfle
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.