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

无需转换为NSAttributedString,如何复制AttributedString属性至新字符串?

Swift 原生实现:给AttributedString追加/前置同属性文本

核心实现代码

假设原AttributedString所有字符属性一致,只需复制第一个字符的属性即可,直接用Swift原生API就能完成,无需转NSAttributedString:

let originalText: AttributedString // 已存在的带统一属性的字符串

// 1. 获取原字符串首个字符的属性容器
guard let attrContainer = originalText.attributeContainer(at: originalText.startIndex) else {
    // 处理原字符串为空的边界情况
    let newText = AttributedString("要前置的文本")
    return
}

// 2. 创建带有原属性的新字符串
var newText = AttributedString("要前置的文本", attributes: attrContainer)
// 3. 拼接原字符串(如果是追加,就先复制原字符串再append新文本)
newText.append(originalText)

关键说明

  • 用attributeContainer(at:)方法可以直接获取指定位置的AttributeContainer,这正是「一键复制属性」的方式,不用逐个提取设置属性
  • 如果是追加文本,逻辑反过来即可:
    var newText = originalText
    let appendText = AttributedString("要追加的文本", attributes: attrContainer)
    newText.append(appendText)
    
  • 边界处理:当原字符串为空时,直接创建无属性的新字符串即可(也可以根据需求自定义默认属性)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 05:05:17