前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Flutter 文本解读 6 | RichText 富文本的使用 (中)

Flutter 文本解读 6 | RichText 富文本的使用 (中)

作者头像
张风捷特烈
发布于 2021-01-26 06:58:23
发布于 2021-01-26 06:58:23
2.8K00
代码可运行
举报
运行总次数:0
代码可运行

@charset "UTF-8";.markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidden;color:#333}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4,.markdown-body h5,.markdown-body h6{line-height:1.5;margin-top:35px;margin-bottom:10px;padding-bottom:5px}.markdown-body h1:first-child,.markdown-body h2:first-child,.markdown-body h3:first-child,.markdown-body h4:first-child,.markdown-body h5:first-child,.markdown-body h6:first-child{margin-top:-1.5rem;margin-bottom:1rem}.markdown-body h1:before,.markdown-body h2:before,.markdown-body h3:before,.markdown-body h4:before,.markdown-body h5:before,.markdown-body h6:before{content:"#";display:inline-block;color:#3eaf7c;padding-right:.23em}.markdown-body h1{position:relative;font-size:2.5rem;margin-bottom:5px}.markdown-body h1:before{font-size:2.5rem}.markdown-body h2{padding-bottom:.5rem;font-size:2.2rem;border-bottom:1px solid #ececec}.markdown-body h3{font-size:1.5rem;padding-bottom:0}.markdown-body h4{font-size:1.25rem}.markdown-body h5{font-size:1rem}.markdown-body h6{margin-top:5px}.markdown-body p{line-height:inherit;margin-top:22px;margin-bottom:22px}.markdown-body strong{color:#3eaf7c}.markdown-body img{max-width:100%;border-radius:2px;display:block;margin:auto;border:3px solid rgba(62,175,124,.2)}.markdown-body hr{border:none;border-top:1px solid #3eaf7c;margin-top:32px;margin-bottom:32px}.markdown-body code{word-break:break-word;overflow-x:auto;padding:.2rem .5rem;margin:0;color:#3eaf7c;font-weight:700;font-size:.85em;background-color:rgba(27,31,35,.05);border-radius:3px}.markdown-body code,.markdown-body pre{font-family:Menlo,Monaco,Consolas,Courier New,monospace}.markdown-body pre{overflow:auto;position:relative;line-height:1.75;border-radius:6px;border:2px solid #3eaf7c}.markdown-body pre>code{font-size:12px;padding:15px 12px;margin:0;word-break:normal;display:block;overflow-x:auto;color:#333;background:#f8f8f8}.markdown-body a{font-weight:500;text-decoration:none;color:#3eaf7c}.markdown-body a:active,.markdown-body a:hover{border-bottom:1.5px solid #3eaf7c}.markdown-body a:before{content:"⇲"}.markdown-body table{display:inline-block!important;font-size:12px;width:auto;max-width:100%;overflow:auto;border:1px solid #3eaf7c}.markdown-body thead{background:#3eaf7c;color:#fff;text-align:left}.markdown-body tr:nth-child(2n){background-color:rgba(62,175,124,.2)}.markdown-body td,.markdown-body th{padding:12px 7px;line-height:24px}.markdown-body td{min-width:120px}.markdown-body blockquote{color:#666;padding:1px 23px;margin:22px 0;border-left:.5rem solid;border-color:#42b983;background-color:#f8f8f8}.markdown-body blockquote:after{display:block;content:""}.markdown-body blockquote>p{margin:10px 0}.markdown-body details{outline:none;border:none;border-left:4px solid #3eaf7c;padding-left:10px;margin-left:4px}.markdown-body details summary{cursor:pointer;border:none;outline:none;background:#fff;margin:0 -17px}.markdown-body details summary::-webkit-details-marker{color:#3eaf7c}.markdown-body ol,.markdown-body ul{padding-left:28px}.markdown-body ol li,.markdown-body ul li{margin-bottom:0;list-style:inherit}.markdown-body ol li .task-list-item,.markdown-body ul li .task-list-item{list-style:none}.markdown-body ol li .task-list-item ol,.markdown-body ol li .task-list-item ul,.markdown-body ul li .task-list-item ol,.markdown-body ul li .task-list-item ul{margin-top:0}.markdown-body ol ol,.markdown-body ol ul,.markdown-body ul ol,.markdown-body ul ul{margin-top:3px}.markdown-body ol li{padding-left:6px}.markdown-body ol li::marker{color:#3eaf7c}.markdown-body ul li{list-style:none}.markdown-body ul li:before{content:"•";margin-right:4px;color:#3eaf7c}@media (max-width:720px){.markdown-body h1{font-size:24px}.markdown-body h2{font-size:20px}.markdown-body h3{font-size:18px}}

零、前言

上篇中,通过文本解析,实现了对指定文字的高亮包裹,如下图。今天我们继续完善这个富文本显示的功能,比如文本链接解析文本标题指定文字加粗、斜体 等。本文会用到一些正则表达式的知识,本系列重点不是正则,不会做过多解释。如果看不懂,可以自己去补补。

以下是 Flutter 文本解读 系列的其他文章:


一、文本链接的处理
1.链接匹配的正则

通过 \[.*?\) 就可以匹配出 markdown 中的链接,这样就可以通过 StringScanner 获取每个匹配到的起始索引。之后的事就和之前一样了。


2.对数据的抽象与实现

可以看出,需要解析的类型是需要拓展的。不同情况的处理也不相同,这样的话,我们可以创建个枚举类,然后根据类型进行判断处理,但这样很多逻辑都会塞在一块,不好维护。我们可以定义一层抽象,分离出属性和行为,再根据不同的情况进行不同的实现,使用时使用抽象类完成任务即可。

如下抽象中,需要的数据是一段字符的起止所以,子类需要实现 text 方法返回展示的字符,实现 style 方法获取文字样式。提供 recognizer 属性进行事件处理。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
abstract class SpanBean {
  SpanBean(this.start, this.end,{this.recognizer});

  final int start;
  final int end;

  String text(String src);

  TextStyle get style;
  
  final GestureRecognizer recognizer;
}
复制代码

这样可以通过 WrapSpanBean 实现之前的包裹高亮,代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//包裹规则: `data` 
class WrapSpanBean extends SpanBean {
  WrapSpanBean(int start, int end) : super(start, end);

  @override
  String text(String src) {
    return src.substring(start + 1, end - 1);
  }

  @override
  TextStyle get style => TextStyleSupport.dotWrapStyle;
}
复制代码

在使用时,使用抽象 SpanBean ,在列表添加对象时使用对应的实现。这便是多态的奥义

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
List _spans = []; // 使用抽象

void parseContent() {
  while (!_scanner.isDone) {
    if (_scanner.scan(RegExp('`.*?`'))) {
      int startIndex = _scanner.lastMatch.start;
      int endIndex = _scanner.lastMatch.end;
      _spans.add(WrapSpanBean(startIndex, endIndex)); // 添加实现
    }
    if (!_scanner.isDone) {
      _scanner.position++;
    }
  }
}

3.链接解析

处理链接数据的 LinkSpanBean 实现 SpanBean

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//链接规则: [data](link)
class LinkSpanBean extends SpanBean {
  LinkSpanBean(int start, int end, {GestureRecognizer recognizer})
      : super(start, end, recognizer: recognizer);

  @override
  TextStyle get style => TextStyleSupport.linkStyle;

  @override
  String text(String src) {
    final String target = src.substring(start, end);
    return target.split(']')[0].replaceFirst("[", '');
  }
}
复制代码

parseContent 中收录 LinkSpanBean,其点击事件通过 url_launcher: ^5.7.10 插件跳转到浏览器。有一点要注意: GestureRecognizer 需要被 dispose,可以在 StringParser 中定义 dispose 来遍历 SpanBean 列表进行释放。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void parseContent() {
  while (!_scanner.isDone) {
    if (_scanner.scan(RegExp('`.*?`'))) {
      int startIndex = _scanner.lastMatch.start;
      int endIndex = _scanner.lastMatch.end;
      _spans.add(WrapSpanBean(startIndex, endIndex));
    }
    
    if (_scanner.scan(RegExp(r'\[.*?\)'))) {
      int startIndex = _scanner.lastMatch.start;
      int endIndex = _scanner.lastMatch.end;
      final String target = content.substring(startIndex, endIndex);
      String link = target.split('(')[1].replaceFirst(')', '');
      GestureRecognizer recognizer = TapGestureRecognizer()
        ..onTap = () {
          launch(link);
        };
      _spans.add(LinkSpanBean(startIndex, endIndex, recognizer: recognizer));
    }
    
    if (!_scanner.isDone) {
      _scanner.position++;
    }
  }
}

void dispose() {
  _spans.forEach((element) {
    element.recognizer?.dispose();
  });
}

4.TextSpan 处理

和之前的处理一样,这里我们为 SpanBean 添加了GestureRecognizer,在生成 TextSpan 时使用一下即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
InlineSpan parser() {
  _scanner = StringScanner(content);
  parseContent();
  final List spans = [];
  int currentPosition = 0;
  for (SpanBean span in _spans) {
    if (currentPosition != span.start) {
      spans.add(
          TextSpan(text: content.substring(currentPosition, span.start)));
    }
    
    spans.add(TextSpan(
        style: span.style,
        text: span.text(content),
        recognizer: span.recognizer));
    currentPosition = span.end;
  }
  
  if (currentPosition != content.length)
    spans.add(
        TextSpan(text: content.substring(currentPosition, content.length)));
  return TextSpan(style: TextStyleSupport.defaultStyle, children: spans);
}

5.使用效果

这样便可以实现下面的将文本中的链接高亮。

并且点击链接时可以进行跳转。


二、标题文字的处理
1.标题匹配的正则

通过 ^#+ .* 来匹配 若干个 # 的开头的行。 在 Dart 正则中多行的开头匹配需要。multiLine: true 。这样如下的 # 777 就不会被误配。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
RegExp(r'^#+ .*',multiLine: true)

2.HeadSpanBean 定义

HeadSpanBean 作为 SpanBean 的实现类,可以完成六个等级的标题,通过 lever 属性表示是几级标题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//标题规则: #+ data
class HeadSpanBean extends SpanBean{

  HeadSpanBean(int start, int end,this.lever) : super(start, end);

  final int lever;

  @override
  TextStyle get style => TextStyleSupport.headStyleMap[lever];

  @override
  String text(String src) {
    final String target = src.substring(start, end);
    return target.replaceRange(0, lever + 1, '');
  }
}
复制代码

TextStyleSupport 中提供一个 headStyleMap 用于根据数字获取样式,这样就不需要用分支结构去逐条返回,让代码看着更舒服些。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class TextStyleSupport {
  static const TextStyle defaultStyle =
      TextStyle(color: Colors.black, fontSize: 14);

  static const TextStyle dotWrapStyle =
      TextStyle(color: Colors.purple, fontSize: 14);

  static const TextStyle linkStyle = TextStyle(
      color: Colors.blue,
      decoration: TextDecoration.underline,
      decorationColor: Colors.blue);

  static const Map<int,TextStyle>  headStyleMap = {
    1:h1,
    2:h2,
    3:h3,
    4:h4,
    5:h5,
    6:h6,
  };

  static const TextStyle h1 =
      TextStyle(color: Colors.black, fontSize: 24, fontWeight: FontWeight.bold);
  static const TextStyle h2 =
      TextStyle(color: Colors.black, fontSize: 22, fontWeight: FontWeight.bold);
  static const TextStyle h3 =
      TextStyle(color: Colors.black, fontSize: 20, fontWeight: FontWeight.bold);
  static const TextStyle h4 =
      TextStyle(color: Colors.black, fontSize: 18, fontWeight: FontWeight.bold);
  static const TextStyle h5 =
      TextStyle(color: Colors.black, fontSize: 16, fontWeight: FontWeight.bold);
  static const TextStyle h6 =
      TextStyle(color: Colors.black, fontSize: 14, fontWeight: FontWeight.bold);
}
复制代码

3.标题的解析

这样通过 ^#+ .* 正则表达式,获取对应字符区间的前后界,再分析有多少个 # 即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (_scanner.scan(RegExp(r'^#+ .*',multiLine: true))) {
  int startIndex = _scanner.lastMatch.start;
  int endIndex = _scanner.lastMatch.end;
  int lever = content.substring(startIndex, endIndex).split(' ')[0].length;
  _spans.add(HeadSpanBean(startIndex, endIndex,lever));
}

这样以 # 开头的标题样式就完成了。在 TextStyleSupport 中你可以修改这些默认的样式。或者提供多组不同的样式,提供切换。知道其中的原理,可操作性就可以大大提高。


三、文字加粗和倾斜
1.文字加粗处理

markdown加粗的规则是 **data**,通过之前的那几个,现在应该知道大致流程了。对应的正则是 \*\*.*?\*\*

定义 BoldSpanBean 如下 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//加粗规则: **data**
class BoldSpanBean extends SpanBean{
  BoldSpanBean(int start, int end) : super(start, end);
  @override
  TextStyle get style => TextStyleSupport.bold;
  @override
  String text(String src) {
    return src.substring(start+2, end-2);
  }
}
复制代码

解析内容时,进行添加 BoldSpanBean 即可。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (_scanner.scan(RegExp(r'\*\*.*?\*\*'))) {
  int startIndex = _scanner.lastMatch.start;
  int endIndex = _scanner.lastMatch.end;
  _spans.add(BoldSpanBean(startIndex, endIndex));
}

这样就可以实现局部文字加粗的效果:


2.文字倾斜处理

markdown倾斜的规则是 *data*。对应的正则是 \*\*.*?\*\*,这时我们会发现,这样加粗的 **data** 会有所干扰,使用在解析时,可以先解析 加粗 ,再解析 倾斜。因为 StringScanner 只会对文本进行一次扫描,加粗 的扫描完后,位置索引会增加,就不会对 倾斜 的正则产生影响。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 加粗匹配
if (_scanner.scan(RegExp(r'\*\*.*?\*\*'))) {
  int startIndex = _scanner.lastMatch.start;
  int endIndex = _scanner.lastMatch.end;
  _spans.add(BoldSpanBean(startIndex, endIndex));
}

// 倾斜匹配
if (_scanner.scan(RegExp(r'\*.*?\*'))) {
  int startIndex = _scanner.lastMatch.start;
  int endIndex = _scanner.lastMatch.end;
  _spans.add(LeanSpanBean(startIndex, endIndex));
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//加粗规则: *data*
class LeanSpanBean extends SpanBean{

  LeanSpanBean(int start, int end) : super(start, end);

  @override
  TextStyle get style => TextStyleSupport.lean;

  @override
  String text(String src) {
    return src.substring(start+1, end-1);
  }
}
复制代码

通过本篇,你应该对富文本的使用多了些了解。这样看来,新加一个规则,最重要的是找到其对应的正则表达式。找到之后,就是一些简单的处理了。本文就到这里,下一篇来看一下,在 Flutter 中如何实现一个代码高亮显示的富文本。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
新手别怕!3 分钟学会扣子(coze)基础智能体部署
扣子Coze AI,由字节跳动匠心打造,是一款功能强大的AI智能体开发平台。借助该平台,用户能够轻松创建、灵活配置并便捷发布各类AI智能体(即机器人)。扣子Coze AI搭载了先进的自然语言处理(NLP)技术,这使其具备了广泛的应用潜力,可被用于搭建聊天机器人,实现人机间流畅的对话交流;构建自动化客服系统,高效解决客户咨询问题;开发智能助手,为用户提供贴心的日常事务协助等丰富多样的应用场景 。
意疏
2025/03/20
1.1K0
新手别怕!3 分钟学会扣子(coze)基础智能体部署
飞书多维表格+DeepSeek:生产力大幅度提升
当你还在官网一遍遍重试时,我已经使用飞书多维表格中的DeepSeek R1实现批量化处理信息和任务,效率提升10倍。
AI研思录
2025/02/20
6920
飞书多维表格+DeepSeek:生产力大幅度提升
4个AI提示词模板,帮你躺赢10万+爆文,第三个太狠了!
写了好文章却没人点击?问题可能出在标题上!这个提示词能帮你生成10个吸引眼球的标题方案,激发读者好奇心,让你的文章阅读量瞬间暴涨!
一臻AI
2025/03/29
1470
4个AI提示词模板,帮你躺赢10万+爆文,第三个太狠了!
AI智能体|老板以为我在加班做Excel图表,其实是DeepSeek+扣子(Coze)在帮我!
小王是某电商平台的运营专员,每周一的工作就是整理上周的销售数据,制作可视化报表给领导汇报。
一臻AI
2025/04/28
3821
AI智能体|老板以为我在加班做Excel图表,其实是DeepSeek+扣子(Coze)在帮我!
Deepseek52条喂饭指令
- 指令:以[身份]的口吻,写一篇[产品]的种草笔记,突出5个使用场景和3个痛点解决方案。
程序员皮皮林
2025/02/09
1600
探秘 AI Agent 之 Coze 智能体:插件创建与使用(7/30)
摘要:Coze 智能体作为新一代 AI 应用开发平台,其插件功能发挥着至关重要的作用。本文详细阐述了 Coze 智能体插件的多方面内容。首先介绍平台特点及插件重要性,插件能通过调用外部 API 扩展智能体能力。接着分析其功能扩展优势及与其他功能协同性,在内容创作、数据分析等多领域有广泛应用场景。文中细致讲解了插件创建步骤,从准备工作到具体流程,包括配置信息、设置参数及测试发布等。还说明了插件使用方法,如添加到智能体、结合工作流运用及多插件协同案例。通过不同场景实战案例展示其价值,并分享常见问题解决办法。最后探讨行业趋势,展望插件未来功能拓展方向,为读者深入理解和运用 Coze 智能体插件提供全面指导。
正在走向自律
2024/12/18
1.9K0
探秘 AI Agent 之 Coze 智能体:插件创建与使用(7/30)
【AIGC】ChatGPT提示词Prompt助力自媒体内容创作升级
以下是董宇辉老师的省市作文集关于北京的文章,作为本次例子中的ChatGPT仿写文章:
CSDN-Z
2024/10/17
2780
【AIGC】ChatGPT提示词Prompt助力自媒体内容创作升级
如何用AI创作10W+阅读量的爆款文章?四步轻松达成
撰写一篇能吸引十万加阅读量的爆款文章,需要深入了解这些文章之所以成功的内在因素。每一则广受欢迎的文章背后,都蕴含着精心的设计与技巧。即便对于普通作者来说,只要掌握文章的结构、逻辑、风格以及标题等核心元素的解析方法,便能在模仿与学习的过程中逐步提升个人的写作水平。借助现代技术的力量,如人工智能(AI)的帮助,分析与仿写文章的过程将变得更加便捷。
凯哥Java
2024/11/27
3160
如何用AI创作10W+阅读量的爆款文章?四步轻松达成
【愚公系列】《高效使用DeepSeek》025-科普内容生成
📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主!
愚公搬代码
2025/04/01
1700
告别加班!用DeepSeek搭建全自动爆款图文工厂
当传统内容生产者仍在手工打磨作品时,人工智能技术正以量子级内容生成力重塑行业规则。
云惑雨问
2025/03/17
2200
告别加班!用DeepSeek搭建全自动爆款图文工厂
Coze bot 使用&变现手册,核心是动起来
今天,我们就来聊一聊字节跳动刚推出的一个非常酷的平台——coze.cn。这个平台简直是为编程小白和资深程序员都准备的“AI梦工厂”。(体验过,0代码,比 GPTs 配置还顺畅,还可以自己的知识库拓展等等功能)
老表
2024/02/06
5.4K0
Coze bot 使用&变现手册,核心是动起来
【AIGC】ChatGPT提示词Prompt解析:如何生成爆款标题、节日热点文案与完美文字排版
随着ChatGPT的不断发展与进化,未来它在内容创作中的应用将更加广泛和智能化。从生成情绪化爆款标题到紧跟节日热点的文案创作,再到优化排版技巧,ChatGPT不仅能够帮助创作者更高效地完成任务,还能通过数据分析和深度学习不断提升内容的精准度和个性化。
CSDN-Z
2024/10/17
4330
【AIGC】ChatGPT提示词Prompt解析:如何生成爆款标题、节日热点文案与完美文字排版
龙哥风向标20231017 GPT拆解
盈利点:利用小红书博主发布的笔记和销量信息,可以进行服装短视频带货或图文带货的模仿学习,从中获取盈利。
ApacheCN_飞龙
2024/01/31
1660
DeepSeek 技术创作者 10 倍速构建专业影响力 —— 现场回顾
大家好,我是默语!3 月 9 日,我在杭州参加了 线下活动,与众多 AI 技术创作者、专家和行业大咖们齐聚一堂,深入探讨 AI 时代如何快速构建个人 IP,并高效进行技术创作。
默 语
2025/03/10
1010
DeepSeek 技术创作者 10 倍速构建专业影响力 —— 现场回顾
探秘 AI Agent 之 Coze 智能体:从简介到搭建全攻略(4/30)
Coze 智能体是基于机器学习和自然语言处理技术的软件实体,它在人工智能领域扮演着重要的角色,能够像一个智能助手一样,通过与外界环境进行交互学习,进而执行各种各样的任务。
正在走向自律
2024/12/18
10K0
探秘 AI Agent 之 Coze 智能体:从简介到搭建全攻略(4/30)
Coze 扣子 | AI 养育计划 - &#34;Flutter 大师&#34;
扣子(coze.cn)是一款用来开发新一代 AI Chat Bot 的应用编辑平台。其中可以构建自己的知识库以及作为资源,这样的话,让 AI Bot 拥有我所有文章的 "智慧",岂不是一位 Flutter 大师 嘛。毕竟连我自己可能都记不清,很久以前文章里的知识细节,让用户和这种 "知识怪物" 交流,肯定能有意料之外的能力。
张风捷特烈
2024/02/25
5310
Coze 扣子 |  AI 养育计划 - &#34;Flutter 大师&#34;
龙哥风向标20231107 GPT拆解
盈利点:利用朋友圈富婆关注疗愈赛道的商机,可以通过直播销售疗愈产品或服务,吸引富裕女性客户,实现高额销售额。
ApacheCN_飞龙
2024/01/31
1640
探秘 AI Agent 之 Coze 智能体:工作流模式(6/30)
摘要:在人工智能领域,随着大模型技术的迅猛发展,智能体的能力得到了极大提升。然而,现实世界中的工作任务往往复杂多样,仅依靠单次大模型调用已难以满足需求。许多任务需要多个步骤、多种技术的协同配合才能完成,例如从数据收集到分析再到决策的过程,或者从用户需求理解到多轮交互并最终提供满意解决方案的服务场景。工作流模式应运而生,它将复杂任务分解为一系列有序的子任务,通过合理组织和协调不同的组件与操作,实现任务的高效处理。这种模式在当前的 AI 应用开发中具有至关重要的意义,它不仅提高了任务处理的准确性和可靠性,还增强了智能体应对复杂多变环境的能力。
正在走向自律
2024/12/18
4.9K2
探秘 AI Agent 之 Coze 智能体:工作流模式(6/30)
【AIGC】ChatGPT提示词Prompt助力广告文案、PPT制作与书籍推荐的高效新模式
本文通过详细介绍了如何使用ChatGPT生成多种类型的内容,包括朋友圈广告推销文案、PPT演示文稿以及书籍推荐爆款文案。利用AI工具,通过精准的提示词和用户的反馈,可以高效提取关键信息,生成具备吸引力、情感共鸣和逻辑清晰的文案或内容框架。这不仅提升了创作效率,还确保了内容质量,适用于各类场景如社交媒体推广、教学演示和营销推广。借助ChatGPT,创作者能够更加专注于优化内容的表达和用户体验。
CSDN-Z
2024/10/17
4420
【AIGC】ChatGPT提示词Prompt助力广告文案、PPT制作与书籍推荐的高效新模式
龙哥风向标20231219 GPT拆解
盈利点:利用小红书热帖中雍和宫手串助力考研上岸的需求火爆,可以代理雍和宫手串并进行销售,同时可以拓展更多与本命年相关产品,如开光手串等,以满足用户需求。
ApacheCN_飞龙
2024/01/31
1560
推荐阅读
相关推荐
新手别怕!3 分钟学会扣子(coze)基础智能体部署
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 零、前言
  • 一、文本链接的处理
    • 1.链接匹配的正则
    • 2.对数据的抽象与实现
    • 3.链接解析
    • 4.TextSpan 处理
    • 5.使用效果
  • 二、标题文字的处理
    • 1.标题匹配的正则
    • 2.HeadSpanBean 定义
    • 3.标题的解析
  • 三、文字加粗和倾斜
    • 1.文字加粗处理
    • 2.文字倾斜处理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档