You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为标记中的auth_public_key字段添加按长度的断行/连字符?

解决长字段内容自动断行/添加连字符的问题

方法一:纯CSS实现(最省心)

直接给显示字段的span加个CSS类,用样式实现自动断行,不用改后端逻辑:

.break-long-key {
  overflow-wrap: break-word; /* 让长单词自动换行 */
  word-break: break-all; /* 强制在任意字符处换行(适合纯字母/数字的长串) */
  white-space: pre-wrap; /* 保留手动换行,同时自动适配容器宽度换行 */
}

修改后的Haml代码:

- if @connection.auth_public_key.present?
  %el-row.m-b-10
    %el-col.p-t-15.p-b-15.p-l-20.p-r-20{":span" => "24"}
      %span.break-long-key= @connection.auth_public_key

方法二:后端按固定长度断行

如果必须严格按指定长度(比如每3个字符就换行),在Ruby层处理字符串:

# 把字符串每3个字符切分,中间加换行符
formatted_key = @connection.auth_public_key.scan(/.{1,3}/).join("\n")

然后在Haml里直接输出处理后的内容:

- if @connection.auth_public_key.present?
  %el-row.m-b-10
    %el-col.p-t-15.p-b-15.p-l-20.p-r-20{":span" => "24"}
      %span.break-long-key= formatted_key

提示:如果要让HTML识别换行,要么给span加white-space: pre-wrap样式,要么把换行符换成<br>标签(用raw方法输出)

方法三:前端JS动态处理

要是想在前端动态调整,用JS处理文本:

const keyEl = document.querySelector('.auth-public-key');
if (keyEl) {
  const rawKey = keyEl.textContent;
  // 每3个字符加换行
  const formattedKey = rawKey.replace(/(.{3})/g, '$1\n');
  keyEl.textContent = formattedKey;
}

对应的Haml要给span加类名:

- if @connection.auth_public_key.present?
  %el-row.m-b-10
    %el-col.p-t-15.p-b-15.p-l-20.p-r-20{":span" => "24"}
      %span.auth-public-key= @connection.auth_public_key

内容的提问来源于stack exchange,提问作者Morozov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 01:55:16