讲故事的手艺人 讲故事的手艺人
  • 创作向
    • 写作
      • 非虚构
      • 剧本
      • 小说
      • 文言
      • 读书
      • 随笔
    • 拍摄
      • 纪录片
      • 设计
      • 视频
      • 摄影
  • 策划向
    • 策划资料
    • 创意之道
    • 短视频研究
  • 技术向
    • AI
    • 前期拍摄
    • 后期制作
    • 原创教程
    • 影像实验
    • 影像设备
    • 穿越机
  • 艺术向
    • 研究学习
    • 大师镜头
    • 电影赏析
    • 视频论文
    • 经验总结
  • 注册
  • 登录
首页 › 技术向 › 原创教程 › AE表达式|21、如何玩转字符串?@substr @parseInt @replace

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

向安宇
2018-09-17 17:03:57原创教程阅读 2,921
如何将图层名作为文字输出源?

 
给文字层的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) 收藏(0)
《桌子》执行台本
上一篇
AE表达式|22、如何用滑块控制明度?@hslToRgb @rgbToHsl
下一篇

请登录以参与评论

现在登录
所有评论(1)
  • DZT

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

    4年前 福建省 回复
标签
720全景 ACES AE AE案例 AE表达式 Anyu翻译 CSC电影学院 fusion Hackintosh MG动画 ps教程 vlog wordpress 创意方法 剪辑 字幕 帧影帧画 抖音 摄影 文案 混剪 混音 灯光 看电影 磨皮 穿越机 纪录片 编剧 美术 美食 論語 调度 调色 达芬奇 重讀文學史 青玉记
室内360全景图的简单修图
2020-10-13 21:51:45
2,691 0 0
达芬奇:高频锐化
2020-03-21 22:41:26
3,879 0 3
3、ISO
2019-11-06 21:54:32
1,754 0 0
2、光圈和景深
2019-11-03 17:10:31
1,758 0 2
1 2
  • 2
  • 1
关于我:

想要读万卷书,行万里路,看万部电影。当过人民教师,做过策划师,入行影视做剪辑、导演。艺术是目的,技术是支撑,不断钻研,积聚梦想,同时分享干货。

推荐栏目:
视频论文 原创教程 后期制作 非虚构 照片 视频
特色专题:
专题汇总 宜看一侃 帧影帧画 美食摄影 重读文学史 青玉记
Copyright © 2016-2025 讲故事的手艺人. 鄂ICP备16005400号-1 鄂公网安备42050602000017号
  • 创作向
    • 写作
    • 拍摄
  • 策划向
    • 策划资料
    • 创意之道
    • 短视频研究
  • 技术向
    • AI
    • 前期拍摄
    • 后期制作
    • 原创教程
    • 影像实验
    • 影像设备
    • 穿越机
  • 艺术向
    • 研究学习
    • 大师镜头
    • 电影赏析
    • 视频论文
    • 经验总结
# 剪辑 # # 转场 # # 纪录片 #
向安宇
痴迷文字,醉心影像
420
文章
5
评论
325
喜欢