向安宇知识库 向安宇知识库
  • 读书向
  • 学习向
    • AI工具
    • AI研究
    • 笔记
    • AIP:克丽丝AI日志
  • 创作向
    • 写作
      • 非虚构
      • 剧本
      • 小说
      • 文言
      • 随笔
      • 日记
    • 视听
      • 纪录片
      • 设计
      • 视频
      • 摄影
    • 课程
  • 影视向
    • 创意策划
    • 前期拍摄
    • 后期制作
    • 影像实验
    • 影像设备
    • 大师镜头
    • 电影赏析
    • 视频论文
    • 项目复盘
  • 折腾向
    • 穿越机
    • 户外
    • 代码
    • 手工
    • 书法
    • 篆刻
    • 绘画
首页 › 创作向 › 课程 › AE表达式|21、如何玩转字符串?@substr @parseInt @replace
  • 2
  • 1

AE表达式|21、如何玩转字符串?@substr @parseInt @replace

向安宇
2018-09-17 17:03:57
如何将图层名作为文字输出源?

 
给文字层的Sourse Text添加表达式:

name

  

如何调用一串文字中指定的文字?

 
利用substr()

substr括号里有两个参数,第一参数是字符串开始的位置,第二个参数是字符串长度。

例如,我们新建一个文字层,命名为“365个祝福”,给Sourse Text添加表达式“name”,则直接输出的文字是“365个祝福”。

那么,我们如何输出这一串文字中的指定文字?比如前3个字符?或者第3个字到地5个字?
AE表达式|21、如何玩转字符串?@substr @parseInt @replace-向安宇知识库
表达式:

name.substr(0,3)

表示从0位置开始,输出3个字符串长度的文字,即输出文字“365”(另:汉字是一个字符,比如这里subsre(0, 5)输出的文字是“365个祝”)
表达式:

name.substr(4,2)

表示从位置4开始,往后两个字符,即“祝福”。

如果经常需要更改输出文字,不确定字符串长度,通常还可以写:

name.substr(0, name.length)

将字符串长度作为输出字符串的长度,这样无论字符串有多长,都可以全部输出出来。
再比如:

name.substr(name.length - 1,1)

可以始终输出最后一个字符。

如何实现打字机效果?

 
既然substr()可以定义字符串长度,那么实现打字机效果轻而易举。

name.substr(0,time*50)

用time的值作为字符串长度的值,可以实现打字机效果。

如何调出字符串中的数字用作其他属性的参数?

 
比如,将“365个祝福”里的数字365调用出来,用作图层的scale属性值:

src = parseInt(thisComp.layer("365个祝福").name);
[src,src]

parseInt()的作用是将字符串中的数字提出来作为整数输出。

看个例子,之前有了一个文字层,文字为“365个祝福”,再新建一个文字层,给source Text添加表达式:

parseInt(thisComp.layer("个祝福").name)

“365个祝福”,返回“365”
“个祝福”,返回“NaN” //第一个字符不是数字,返回错误;
“365天12个祝福”,返回“365” //仅返回第一组数字;
“036个祝福”,返回“30” //字符串以“0”开头时候,将“0”以后的数字,解析为8进制(或16进制)的数字:
AE表达式|21、如何玩转字符串?@substr @parseInt @replace-向安宇知识库

parseInt()的语法为:

parseInt(string, radix)

可将不同进制转换为10进制,string为进制,当radix不填写或填写为“0”的时候,解析为10进制;

radix的值应该在2~36之间。

parseInt("10"); //按10进制解析,返回 10
parseInt("19",10); //将“19”按10进制解析,返回 19 (10+9)
parseInt("11",2); //将“11”按2进制转换为10进制,返回 3 (2+1)
parseInt("17",8); //将“17”按8进制转换为10进制,返回 15 (8+7)
parseInt("1f",16); //将“1f”按16进制转换为10进制,返回 31 (16+15)
AE表达式|21、如何玩转字符串?@substr @parseInt @replace-向安宇知识库

如何替换字符串中的文字?

 
新建一个文字层,输入文字:
“Every Day,Every Day,我在等你”

接着,我们试着用表达式将其中的英文变为中文。给Source Text添加表达式:

text.sourceText.replace(/every day/,"每一天")

双斜杠里的内容是要替换的RegExp对象(正则表达式),逗号后引号内的内容,是替换文本。但是这里,我们发现添加表示后,并没有任何变化,因为该表达式是识别大小写的,在字符串中没有找到符合every day的字符,所以不会有变化,我们需要让这个表达式忽略大小写,方法是在第二个双斜杠后添加“i”:

text.sourceText.replace(/every day/i,"每一天")

这时候我们发现只替换了第一个“Every Day”,第二个“Every Day”没有变化,因为表达式找到相符合的字符,替换掉,然后就停下来了。我们希望能够继续找相符合的字符并全局替换,添加“g”:

text.sourceText.replace(/every day/gi,"每一天")

到这里,我们已经将原文字替换成为:
“每一天,每一天,我在等你”

< 返回目录

AE表达式
2
《桌子》执行台本
上一篇
AE表达式|22、如何用滑块控制明度?@hslToRgb @rgbToHsl
下一篇

评论 (1)

登录后可发布~
立即登录
  • DZT

    太强了~搜索全网终于找到这个功能,完美解决我的问题,感谢大佬!!!

    5 年前

向安宇

痴迷文字,醉心影像
447
文章
5
评论
325
喜欢

近期评论

不同意知识过时这么快,数学公式几百年都没变啊
—— Baron von Laughsalot 10 月前 1.我将深入研究如何提升学习力,以及如何用AI提升学习效率
这学习方法太适合我这种记性差的了,必须追更!
—— 狂血战士 11 月前 AIP克丽丝的构想
数字人做语言教学太香了,求Anni快出实操指南!
—— 贪吃小熊 11 月前 Anni搞钱系列:普通人用AI,到底能做起来什么副业?
想问作者会开线下课吗?想带孩子去听听
—— 秋分桂落 11 月前 1.我将深入研究如何提升学习力,以及如何用AI提升学习效率
想问下这个AI工具对服务器配置要求高吗?
—— 狂喜的烟花 11 月前 wordpress也要拥抱AI

猜你喜欢

MG动画教程005|文字缩放和随机变化(苹果快闪广告教学)

MG动画教程005|文字缩放和随机变化(苹果快闪广告教学)

2018-03-12 14:46:23
1,627 0 0
达芬奇:高频锐化

达芬奇:高频锐化

2020-03-21 22:41:26
4,420 0 3
1、快门

1、快门

2019-11-02 23:22:11
2,672 1 2
AE表达式|随机单个文字跳跃效果

AE表达式|随机单个文字跳跃效果

2018-02-01 9:39:25
2,880 0 3
1 2

关于我:

想要读万卷书,行万里路,看万部电影。

推荐栏目:

视频论文 课程 后期制作 非虚构 照片 视频

特色专题:

专题汇总 宜看一侃 帧影帧画 重读文学史 青玉记
Copyright © 2016-2026 向安宇知识库. Designed by nicetheme. 鄂ICP备16005400号-1 鄂公网安备42050602000017号
  • 读书向
  • 学习向
    • AI工具
    • AI研究
    • 笔记
    • AIP:克丽丝AI日志
  • 创作向
    • 写作
    • 视听
    • 课程
  • 影视向
    • 创意策划
    • 前期拍摄
    • 后期制作
    • 影像实验
    • 影像设备
    • 大师镜头
    • 电影赏析
    • 视频论文
    • 项目复盘
  • 折腾向
    • 穿越机
    • 户外
    • 代码
    • 手工
    • 书法
    • 篆刻
    • 绘画
  • 剪辑
  • 转场
  • 纪录片

向安宇

痴迷文字,醉心影像
447
文章
5
评论
325
喜欢