CSV 看起來很簡單,直到某個值裡出現分隔符。直接把每一行按逗號切開,在 Alice,Active,10 這種資料上能工作,但一旦單元格裡出現 "Keyboard, compact" 或 "1,999.00" 就會失效。可靠的轉換必須先解析 CSV 記錄,再生成 Markdown。
先確保 CSV 本身有效
CSV 解析器會把引號欄位中的分隔符視為文字。引號欄位中的雙引號通常以兩個雙引號表示。例如:
Product,Description,Price
Keyboard,"Compact, wireless","$89.00"
Monitor,"27"" IPS display","$299.00"
第二筆記錄只有三個單元格,不是五個。轉換大型檔案前,先確認分隔符與字元編碼。試算表匯出的內容可能是逗號、定位字元或分號,取決於地區設定。如果單元格裡常出現逗號,而且匯出格式你可以控制,優先使用 TSV。
將解析後的網格轉成 Markdown
Markdown 表格需要表頭和分隔列。上面的記錄會變成:
| Product | Description | Price |
| :--- | :--- | ---: |
| Keyboard | Compact, wireless | $89.00 |
| Monitor | 27" IPS display | $299.00 |
說明文字與識別符通常左對齊,緊湊的狀態值可以置中,數值類欄位通常右對齊,方便讀者橫向比較。對齊只是展示元資料,不會把字串變成數值。
跳脫 Markdown 專用字元
CSV 的引號規則和 Markdown 的跳脫規則處理的是不同問題。解析後的單元格裡如果有字面量 |,在生成 Markdown 之前必須轉成 \|,否則它會被當成下一欄的邊界。大多數 Markdown 表格渲染器也不支援單元格裡真正的換行。可以把換行替換成空格,或者在目標平台允許 inline HTML 時使用 <br>。
不要機械地刪掉所有引號。解析器只應移除用來包住欄位的引號,並把雙引號還原成字面量引號。未加引號的值裡本來就存在的引號應該保留。
在目標平台驗證
GitHub、GitLab、文件生成器和筆記工具並不完全實作同一種 Markdown 規則。把一小段樣例貼到最終平台裡,確認欄數、直線、HTML 和 Unicode 都正常,再去轉換上千行資料。
對於敏感資料,可以直接使用 可視化 Markdown 表格產生器。解析和轉換都在瀏覽器內完成,表格內容不需要上傳到轉換 API。