表达式使用交流

经验创意 · 18843 次浏览
CL 创建于 2020-04-08 22:27

表达式可以用来做比较、计算等数据处理。如果你有表达式使用方面的疑问或经验,欢迎在本帖下留言。

  • 比较列表是否为空列表: $= {列表变量}.Count() == 0

  • 比较列表是否只有一项并且内容为指定的值: $= {列表变量}.Count() == 1 && {列表变量}[0] == "对比的值"

  • 取“x,y”形式坐标中的x:$= {x,y形式的文本类型坐标变量}.Split(',')[0]  

相关文档:

- 表达式:https://www.yuque.com/quicker/help/expression

- 在“如果”模块中使用表达式:https://www.yuque.com/quicker/help/if#XAN0k

CL 最后更新于 2020/4/9

回复内容
治钧 2020-04-08 23:41
#1

判断词典是否为空词典:

$= {词典变量}.Count() == 0

治钧 2020-04-09 11:35
#2

列表A有元素:a、b、c

列表B有元素:b、c、d

要找到A中有而B中没有的元素(这里是元素a):

$= {A}.Except({B})   

coucou 2021-02-05 17:18 :

哈哈哈,词典类型有没有类似的表达式

coucou 最后更新于 2023-09-03 15:52
linex 2020-04-09 21:45
#3

表达式使用非常方便,效率很高。例如:

判断一个字符串 s 是否为空,或者是否全部由空格组成:

$= String.IsNullOrWhiteSpace({s})

根据文件的完整路径  filename  获取文件名:

$= {filename}.Substring({filename}.LastIndexOf("\\") + 1)

根据 list 拼接为列表显示字符串:

$= String.Join("\n", {list})

如果字符串为空,则使用其他字符串,否则使用该字符串:

$= {s}.Length == 0 ? "默认字符串" : {s}

一个列表是否包含任意的元素:

$= {list}.Contains({s})

字符串插值(把一些值插入到字符串中),如 a = hello, b = world

使用加号:

$= {a} + "," + {b} + "!" 

使用 String.Format:

$= String.Format("{0},{1}!", {a}, {b})
结果都是 hello,world!

如果有一个列表 list,格式为 [a=b, c=d, e=f] 如何用一行代码(狗头)检测其中是否存在不全(如[a=b, c=, e=f])的字符串这种的状况:

String.Join("=", {list}).Contains("==")
linex 最后更新于 2020-04-10 22:08
治钧 2020-04-10 13:18
#4

比较两个列表(词典)的内容是否相同:

$= {列表A}.SequenceEqual({列表B})

$= {词典A}.SequenceEqual({词典B})

化栀子 2020-06-29 15:21 :

请问返回值是什么类型啊

CL 回复 化栀子 2020-06-29 15:22 :

布尔(是否)

化栀子 回复 CL 2020-06-29 15:29 :

那返回的布尔值给传递给哪个变量呢,还是表示式本身就是呢,需要自己再定义一个变量再接收吗(本人小白,兴趣使然,谢谢CL的回答)

CL 回复 化栀子 2020-06-29 15:31 :

表达式的结果传递给使用表达式那个地方的参数。

治钧 2020-04-10 14:27
#5

获取变量类型:

$= {变量}.GetType()

我也是小黑 2020-06-19 16:29
#6

检查列表里是否含有某个元素(字符串或者是文本变量,全字匹配),两种方式:

$={列表变量}.Contains("元素")

输出结果是一个布尔值,true 或 false

$={列表变量}.IndexOf("元素")

输出结果是一个数字值,该元素的索引值或者是 -1(既列表内没有该元素)

----------------------------

检查字典里是否含有某个键:

$={字典变量}.ContainsKey("键")

输出结果是一个布尔值,true 或 false

我也是小黑 最后更新于 2020-07-20 17:38
我也是小黑 2020-06-24 21:23
#7

截取列表 GetRange(int, int),其中 int 为元素的位置索引,如截取列表上第 2 个位置至最后一个位置上的所有元素:

$={列表}.GetRange(1, {列表}.Count()-1)

CL 提供的写法

$={列表}.Skip(1).Take({列表}.Count()-1)
我也是小黑 最后更新于 2020-07-18 09:03
Marcus-5折CDN 2020-06-30 14:41
#8

$$指定小数点保留位数:
{数字}.ToString("f2") //转换成文本,2代表小数位数,四舍五入。
((int)({数字}*100))*0.01 //先乘以100,保留整数后再乘以0.01转成两位小数,不四舍五入。
Math.Round({数字},2) //保持数字状态,2代表小数位数,四舍六入奇进偶舍。
判断词典内是否存在某个键Key:{dict}.ContainsKey("Key")
正则从右往左替换:Regex.Replace({text},"正则表达式","替换内容",RegexOptions.RightToLeft)
根据值查找词典的key:{dict}.FirstOrDefault(x => x.Value == "one").Key 列表排序: {list}.OrderBy(x => Convert.ToInt32(x)).ToList()  //对列表数字进行升序处理 {list}.OrderByDescending(x => Convert.ToInt32(x)).ToList()  //对列表数字进行降序处理
词典转Json:JsonConvert.SerializeObject({dict})
列表求和:{list}.Sum(x => Convert.ToInt32(x))
列表求平均值:{list}.Average(x => Convert.ToInt32(x))
列表求最大值:{list}.Max(x => Convert.ToInt32(x))
列表求最小值:{list}.Min(x => Convert.ToInt32(x))
列表指定索引范围取值:{List}.GetRange({开始位置},{取值个数})
合并列表为文本:String.Join("分隔符", {列表变量})
判断列表是否包含某项 {列表变量}.Contains("某项内容")
判断字符是否包含关键字:{text}.Contains("keyword")
列表带条件取值:{list}.Where((x, index) => index % 2 == 1);
Base64解码: System.Text.Encoding.Default.GetString(Convert.FromBase64String({text}))
Marcus-5折CDN 最后更新于 2021-07-15 16:49
Cesar 2021-07-15 18:37 :
Base64解码用Default解码的话是gb2312编码
Marcus-5折CDN 回复 Cesar 2021-07-15 19:36 :

用Default好像也没出现乱码情况

果然君2 2020-11-08 09:49
#9

 #提取文件路径信息
获取文件名 Path.GetFileName({path})
获取文件名(无扩展)Path.GetFileNameWithoutExtension({path})
获取文件扩展名 Path.GetExtension({path})
获取文件所在路径 Path.GetDirectoryName({path})

果然君2 最后更新于 2020-11-10 11:34
风吹云飞 2021-02-18 17:07
#10


CL 最后更新于 2021-02-19 09:52
咿呀杀杀 2021-04-12 15:04
#11


拆分文本为列表 & 文本截取

示例:以高亮的字符(串)作为分隔符,拆分文本得到蔬果列表

"香蕉苹果草莓番茄青瓜"

    $= {文本内容}.Split(',')     //单个分隔符

 "香蕉/苹果/草莓番茄/青瓜"

     $= {文本内容}.Split('/', '、')  //多个分隔符

"香蕉1斤、苹果2斤、草莓3斤、番茄4斤、青瓜5斤"

    $= Regex.Split({文本内容}, '\d斤、?')     //以正则匹配内容作为分隔符

既然是列表,就可以通过索引号访问元素来实现文本截取:

"百度|www.baidu.com"

    $= {文本内容}.Split('|')[0]    //返回文本 “百度"

    $= {文本内容}.Split('|')[1]    //返回文本 “www.baidu.com"

咿呀杀杀 最后更新于 2021-04-12 15:44
回复主贴