🌐Vue 3 表格欄位換行處理:如何保留逗號並換行顯示(含 LCM1 與 MATERIAL1 實作範例)

前言

在企業內部系統或資料分析工具中,我們經常需要在表格中顯示大量文字資料,例如產品編號、客戶資訊、或製造流程代碼。
有時候,資料來源會以 逗號 ( , )分號 ( ; ) 作為分隔符號,但在表格顯示時,如果全部內容擠在同一行,不僅不易閱讀,也容易造成橫向捲動條過長的問題。

今天,我要分享一個 Vue 3 的實作方法,可以讓表格欄位(例如 LCM1MATERIAL1)在遇到逗號或分號時自動換行,並且 保留逗號(方便辨識資料的原本分隔)。




需求說明

假設資料來源是這樣的:

AAA,BBB;CCC,DDD

我們希望在表格中顯示成這樣:

AAA, BBB CCC, DDD

規則如下:

  1. 逗號 ( , ) → 保留逗號後換行。

  2. 分號 ( ; ) → 直接換行,不保留分號。

  3. 保留原本的資料順序與內容。




核心解法:toMultiline() 函式

// 將資料依規則換行:保留逗號換行,分號直接換行 function toMultiline(val) { if (val == null) return '' return String(val) .split(/([,;])/g) // 分割同時保留分隔符 .reduce((acc, part) => { if (part === ',') { acc.push(',') // 保留逗號 acc.push('\n') // 再換行 } else if (part === ';') { acc.push('\n') // 分號直接換行 } else { acc.push(part.trim()) // 其他內容去除多餘空白 } return acc }, []) .join('') .replace(/\n\s+/g, '\n') // 去除換行後多餘空白 .trim() }

這段程式碼的關鍵點是:

  • split(/([,;])/g):利用正則表達式分割字串,並且保留逗號與分號作為獨立項目。

  • reduce():用陣列累加的方式,逐步組合出符合規則的新字串。

  • 保留逗號再換行:遇到 , 就先加上逗號再加上 \n

  • 分號換行:遇到 ; 直接換行,不保留分號。

  • white-space: pre-line;:透過 CSS 讓 \n 在 HTML 表格中正常顯示為換行。




在 Vue 3 中套用

fetchPlanData() 將資料轉換時,對 LCM1MATERIAL1 欄位套用 toMultiline()

const rows = raw.map((item) => { const o = {} Object.keys(item).forEach((k) => { const nk = normalizeKey(k) let v = item[k] if (nk === 'MATERIAL1' || nk === 'LCM1') { v = toMultiline(v) // 套用換行規則 } o[nk] = v }) return o })



CSS 設定(保證換行生效)

td.material-multiline { white-space: pre-line; word-break: break-all; text-align: left; }

並在 <template> 中針對這兩個欄位加上 material-multiline 類別:

<td :class="{ 'material-multiline': hdr === 'MATERIAL1' || hdr === 'LCM1', 'text-right': isNumericColumn(hdr) }"> {{ row[hdr] }} </td>



實作效果

原始資料:

AAA,BBB;CCC,DDD

表格顯示:

AAA, BBB CCC, DDD

使用者不需要橫向捲動就能清楚閱讀每個項目,尤其在多筆資料對比時可讀性大幅提升。




為什麼這樣做比較好?

  • 保留原本資料的分隔符號(例如逗號)有助於對照資料庫或 API 原始資料。

  • 視覺分行讓資料更容易對齊與閱讀,減少因為一行過長造成的視覺疲勞。

  • CSS 配合 pre-line 能保持簡潔,不需要額外使用 <br> 標籤。

  • 可擴展性高,未來若需要針對其他符號做不同處理,可以直接修改 toMultiline()




結論

這個方法雖然簡單,但對於需要處理長字串顯示的前端專案非常實用。
特別是在 Vue 3 這種響應式框架中,只要在資料進入狀態管理前做一次轉換,就能在表格、匯出 Excel 等各種場景中保持一致的換行規則。

如果你也在做內部系統或資料分析平台,不妨試試這種 「保留逗號並換行」 的技巧,能讓使用者體驗大幅提升。

留言

這個網誌中的熱門文章

🛠【ASP.NET Core + Oracle】解決 ORA-00904 "FALSE": 無效的 ID 錯誤與資料欄位動態插入顯示問題

🛠【實戰排除教學】從 VS Code 的 _logger 錯誤,到 PowerShell 找不到 npm/serve,再到 Oracle ORA-03135 連線中斷——一次搞懂!

🔎如何在 Oracle PL/SQL 儲存過程中為文字欄位加入換行符號(CHR(10))——以 Updlcmremark 為例