如何使用表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用表达式相关的知识,希望对你有一定的参考价值。
参考技术A 要看你用在什么地方的表达式了给你举个例子吧
在FastReport报表中,表达式(Expressions)用在很多地方,譬如文本框,排序过滤器等。
表达式基于报表选择的脚本语言,从菜单[报表]->[选项]打开“报表选项对话框”,切换到“脚本”标签页,选择对应的脚本语言(本系列经验均以C#语言)。注意:变更语言会删除所有脚本("代码"标签页中的脚本)。
表达式例子:
数学表达式:2*2=[2*2]
报表路径:[Report.FileName]
表达式编辑器
通过表达式编辑器,能够快速的书写表达式。
几种引用内容
引用报表对象
如上面举例的[Report.FileName]
引用.NET方法
在代码标签页添加如下代码,在表达式编辑器中可直接使用如下:
引用.NET方法:[Demo.MyFunctions.Func1()]
注意:需要为静态方法。
引用数据源
例子:[[学生表.姓名] + "(" + [学生表.性别] + ")"]
输出:小明(男)
注意:在表达式中使用的数据列依赖其数据类型,比如不能将字符串类型的列和数字类型的列直接运算,需要转换成相同的类型。
进阶:使用.NET方法根据生日计算学生的年龄。
在代码中添加年龄计算方法CaculateAge(),在报表中引用如下:
[Demo.MyFunctions.CaculateAge([学生表.生日])]
引用系统变量
如根据系统变量Date获取当前年份:[[Date].Year]
引用汇总值
汇总值是Variant类型,能根据具体情况自动转换类型。
比如计算男生占总人数的比例:[[男生数]/[总数]]
引用参数
访问子参数需带上父参数名称。
注意:参数能通过属性设置其类型,描述以及表达式。
如何在正则表达式 extjs 中使用 '\'
【中文标题】如何在正则表达式 extjs 中使用 \'\\\'【英文标题】:How to use '\' in the regular expression extjs如何在正则表达式 extjs 中使用 '\' 【发布时间】:2012-04-12 04:50:35 【问题描述】:我正在使用这个正则表达式:[a-zA-Z0-9\-.,:+*()=\'&_],但是我得到了类似的错误:'unterminated character class' error in this expression' :
演示代码:
Ext.getCmp('field2').addListener(
beforequery: function (e)
if (e.query && e.query.indexOf('?') != -1)
var temp = '';
for(var i=0;i<e.query.length;i++)
temp = temp + '['+e.query[i]+ ']';
e.cancel = true;
var query = new RegExp(String.format('^0',temp.replace(/\?/g, 'a-zA-Z0-9\.,:\+*()=\'&_-\\')));
this.expand();
this.store.clearFilter(true);
this.store.filter(this.displayField, query);
);
错误:
1.请有人告诉我这有什么问题,主要是反斜杠。
2.当我们在组合框中输入所需的字符时,它们会被自动选择..所以当我们要输入新字符时,我们必须按侧箭头,否则剩余的字符将被删除...
再次感谢,
拉吉
【问题讨论】:
【参考方案1】:我认为你必须逃避你的角色类中的一些项目。比如你的反斜杠、星号、加号、括号和句号。
类似[a-zA-Z0-9\\-\.,:\+\*\(\)=\\'&_]
在正则表达式中为特殊字符 [\^$.|?*+()
添加反斜杠会抑制它们的特殊含义,从而允许您按字面意思使用它们。
http://www.regular-expressions.info/reference.html
【讨论】:
嗨@hungerstar,当我使用上述正则表达式时出现此错误:未捕获的语法错误:无效的正则表达式:/^[a-zA-Z0-9-.,:+*()=\ '&_][]/: 未终止的字符类【参考方案2】:在正则表达式中有 11 个字符需要转义:左方括号 [、反斜杠 \、插入符号 ^、美元符号 $、句点或点 .、竖线或竖线符号 |、问题标记 ?、星号或星号 *、加号 +、左圆括号(和右圆括号)。
【讨论】:
【参考方案3】:您需要对正则表达式中的某些字符进行转义。所以它看起来像:
var regex = /[a-zA-Z0-9\-\.,:\+\*\(\)=\\'&_]/; // Note the backslashes
括号、加号、星号和反斜杠是正则表达式中具有特殊含义的众多字符中的一部分。为了从字面上包含它们,您需要使用反斜杠对其进行转义。
【讨论】:
嗨@alpha123,当我使用上面的正则表达式时出现此错误:未捕获的语法错误:无效的正则表达式:/^[a-zA-Z0-9-.,:+*()=\ '&_][]/: 未终止字符类 @rajasti277 我写的时候一定是睡着了。尝试更新版本。以上是关于如何使用表达式的主要内容,如果未能解决你的问题,请参考以下文章