NCV5-公式技术红皮书_第1页
NCV5-公式技术红皮书_第2页
NCV5-公式技术红皮书_第3页
NCV5-公式技术红皮书_第4页
NCV5-公式技术红皮书_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

公式技术红皮书公式技术红皮书 NC UAP 5 0 用友 NC UAP 2020 03 26 第 2 页 目目 录录 第一章第一章新版公式使用手册新版公式使用手册 1 1 公式主要功能 1 2 公式的基本使用方法 2 2 1创建公式执行器 2 2 2设置公式执行器环境 3 2 3设置公式的值 3 2 4对公式进行语法检查 3 2 5提取公式变量 4 2 6给公式变量赋值 4 2 7取得公式的值 5 3 数值型计算结果小数位的控制 5 4 自定义变量的使用 6 5 如何从公式中提取变量 8 6 空值 NULL 值及 Zero 值的处理 9 7 如何进行列操作 11 8 利用自定义函数扩展公式功能 11 9 外接函数的使用 12 10 运算符重载 13 11 公式简单调试 14 附录附录 1公式解析器内置变量列表公式解析器内置变量列表 15 附录附录 2公式解析器内置公式列表公式解析器内置公式列表 15 1 数学运算函数 15 2 条件判断函数 18 3 数据库查询函数 20 4 字符串相关函数 21 5 日期函数 23 6 类型转换函数 23 7 货币金额函数 24 8 多语言翻译函数 25 9 其他函数 26 第 1 页 第一章第一章 新版公式使用手册新版公式使用手册 1 公式主要功能公式主要功能 1 支持一般的算术运算 例如 sin 1 35 a b cos 3 4 c 其中a b c均为变量 2 支持对数值型计算结果小数位的控制 3 支持逻辑运算符 b a col1 col3 c a b 14 支持一个线程内多个公式执行器实例交替运行的情况 但不支持多个线程 内同一公式执行器实例交替运行 所以如果程序中起多线程的话 建议每个线 程单独创建自己的公式解析器示例 例如下面的代码是可行的 FormulaParseFather f new FormulaParse f setExpress formula f setNullAsZero true FormulaParseFather f1 new FormulaParse f1 setNullAsZero false f setDataSArray map String res f getValueS 2 公式的基本使用方法公式的基本使用方法 使用公式解析器的基本步骤如下 2 1 创建公式执行器 如果在客户端使用公式解析 FormulaParseFather f new nc ui pub formulaparse FormulaParse 如果在服务端使用公式解析 FormulaParseFather f new nc bs pub formulaparse FormulaParse 如果不知道当前的代码会在哪一端运行 可以用下面的方法进行判断 if RuntimeEnv getInstance isRunningInServer parse new nc bs pub formulaparse FormulaParse else parse new nc ui pub formulaparse FormulaParse 第 3 页 2 2 设置公式执行器环境 自定义变量及自定义函数可参考后续章节描述 这里可以给公式执行器添加自定义变量 例如 UFDouble var1 new UFDouble 5 368 f addVariable var1 或者添加自定义函数 例如 类YourFunction是一个定义的函数类 关于如 何自定义函数 请参考自定义函数一节 在公式中函数取名为 yourfun 则 可以这样添加你的自定义函数 f addFunction yourfun new YourFunction 2 3 设置公式的值 设置公式执行器环境非必须步骤 对于单行公式 String fomula sin 30 2 56 78 f setExpress fomula 对于多行公式 String formulas new String viewmny1 viewnum viewprice rate 0 23 viewmny2 viewnum viewprice rate 0 24 f setExpressArray formulas 2 4 对公式进行语法检查 在设置完公式之后 直接调用执行器的check 方法便可以进行公式检查 bool isok f check 如果返回结果为false 那么说明公式存在语法错误 调用getError 可 以获得具体的错误信息 String errmsg f getErrorMsg 下面是一段具体应用的代码 FormulaParseFather f new nc ui pub formulaparse FormulaParse 第 4 页 String formula a getChineseCurrency cchmny 34 boolean isok f check if isok System out println f getError return 另外 如果还没有设置公式 仅仅是想校验公式的正确性 则可以直接通 过 checkExpress String formula 或者 checkExpressArray formulas 来检查公式 例如 bool isok f checkExpress formulas 单行公式 bool isok f checkExpressArray formulas 多行公式 注意 如果是多行公式 那么只要有一个公式写法是错误的 那么检查结 果就会是false 2 5 提取公式变量 在单据模板和打印模板的应用中 公式中的变量并不是已知的 需要从公 式中分析得到 取得公式中的变量之后 再把相应的值赋给变量 新版公式解 析器 中提取公式中变量的接口和老版是一致的 VarryVO varrys f getVarryArray 下面是单据模板里取公式变量的典型代码 设置表达式 formulas filterUsedFormulas bfc formulas if formulas null return null f setExpressArray formulas 获得变量名 final VarryVO varrys f getVarryArray 2 6 给公式变量赋值 下面是一段给公式变量赋值的代码 下列代码假设varrys不会为null VarryVO varrys f getVarryArray for int i 0 i varrys length i 第 5 页 String varries varrys i getVarry 提取公式变量非必须步骤 if varries null for int j 0 j cchmny cchmny cchmny b a cchmny c a b cchmny f setExpressArray formulas Map map new HashMap List v2 new ArrayList v2 add new UFDouble 1 99999 row value v2 add new UFDouble 2 9999 row value v2 add new UFDouble 3 99999 v2 add new UFDouble 1 999994 row value map put cchmny v2 f setDataSArray map f setScale a 5 f setScale b 6 Object res f getValueOArray assertEquals 应该相等 7 99988 res 0 0 toString 10 assertEquals 应该相等 15 999680 res 1 0 toString 默认精度为8 assertEquals 应该相等 255 98976018 res 2 0 toString 4 自定义变量的使用自定义变量的使用 公式支持自定义变量 只要相关的操作允许的话 自定义变量可以是任何 类型的 下面的代码说明了如何加入一个名为var1 UFDouble型的变量 FormulaParseFather f new nc ui pub formulaparse FormulaParse String formula a round var1 3 第 7 页 f addVariable var1 new UFDouble 3 56893 除了可以加入简单类型的变量 还可以加入ArrayList3 用户自定义对象4 等等 下面的代码演示了如何加入一个ArrayList型的变量 FormulaParseFather f new nc ui pub formulaparse FormulaParse String formula a round var1 3 List list1 new ArrayList list1 add new UFDouble 56 2354 list1 add new UFDouble 23 2343 f addVariable var1 list1 另外还可以批量的加入多个变量 公式解析器提供两个接口如下 setDataSArray Hashtable 老版接口要求 不推荐使用 setDataSArray Map 需要注意的是 由于老版接口setDataSArray Hashtable 所有的参数均通过 字符串传入 所以在以此方式传入参数时 存在真假字符串之分 真字符串形 如 v1 0 SHVO0000000000000005 v1 1 SHVO0000000000000005 v1 2 SHVO0000000000000005 即在字符串的两端加上双引号 表示传入的参数为String类型 如果两 端不加这个符号 则表示传入的为数值型 公式解析器会将其转换为数值型处理 例如 v1 0 623 23 v1 1 5263 12 v1 2 5242 01 而如果通过addVariable name Value 或者以setDataSArray Map 方式传入参数 时 参数的类型取决于实际传入的类型 公式解析器不会做任何转换 请注意 下面两段代码的差别 老版公式接口 判断真假字符串 FormulaParseFather f new nc ui pub formulaparse FormulaParse f setExpress a var1 var2 List v2 new ArrayList v2 add 100 row value v2 add 200 row value Hashtable map new Hashtable map put var1 v2 map put var2 v2 Hashtable maps new Hashtable 1 maps 0 map f setDataSArray maps 将会转为数值 第 8 页 f setScale 2 String res f getValueS assertEquals Should equal 200 00 res 0 toString 新版增加的接口 传什么就是什么 完全按Object方式传递参数 FormulaParseFather f new nc ui pub formulaparse FormulaParse f setExpress a var1 var2 List v2 new ArrayList v2 add 100 row value v2 add 200 row value Map map new HashMap map put var1 v2 map put var2 v2 f setDataSArray map 当作字符串 f setScale 2 String res f getValueS assertEquals Should equal 100100 res 0 toString 注意 公式中的变量取名不可与内置自定义变量名 可参考附录内置变量列 表 相同 也不得与内置的函数名 可参考附录内置公式列表 相同 如果和内置 变量相同 公式解析可能会得到不正确的结果 如果变量和内置函数名相同 则会报公式解析错误 5 如何从公式中提取变量如何从公式中提取变量 单据模板和打印模板的公式解析要求可以解析识别公式中的列变量 以便 从模板中取得相应的值赋给这些列变量 比如对下面的公式 String formulas new String viewcode getColValue hyca viewobj viewcode pk viewobj pk viewobj viewchinaname getColValue hyca viewobj viewchinaname pk viewobj1 pk viewobj1 summny cchmny 25 5 cchmny FormulaParseFather f new nc ui pub formulaparse FormulaParse f setExpressArray formulas 得到的varrys的信息如下 varrys 0 formulaName viewcode varry 1 pk viewobj 第 9 页 varrys 1 formulaName viewchinaname varry 1 pk viewobj1 varrys 2 formulaName summny varry 1 cchmny 其中VarryVO的定义如下 public class VarryVO String formulaName null 公式名 等号左边 String varry null 变量 等号右边的变量 利用varrys的信息就可以从模板中取得相应列变量的值 并将公式返回的值 赋给每行公式左边列名所对应的列 下面是提取变量的另一个例子 演示了从复 杂的函数中提取列变量 String formulas new String viewcode hyca viewobj cvn hyca viewobj viewcode pk viewobj pk viewobj viewcode cvs hyca viewobj viewcode pk viewobj pk viewobj1 viewchinaname getColNmV hyca viewobj viewchinaname pk viewobj pk viewobj2 FormulaParseFather f new nc ui pub formulaparse FormulaParse f setExpressArray formulas VarryVO varrys f getVarryArray assertEquals 应该相等 2 varrys length assertEquals 应该相等 4 varrys 0 getVarry length 6 空值空值 NULL 值及值及 Zero 值的处理值的处理 在公式解析中 请注意区分以下三个概念 空值 指长度为0的字符串 NULL值 指没有分配任何空间的Object 类似JAVA语言里的NULL Zero值 指Double 0 公式执行器有一个共有函数setNullAsZero boolean value 用于设置在运算 过程中是否需要将NULL值作为Zero值来进行运算 默认状态下 公式执行器设 置setNullAsZero false 请看下面的例子 第 10 页 String formula new String a val1 val2 b val1 val2 FormulaParseFather f new FormulaParse f addVariable val1 null f addVariable val2 new Double 56 f setExpressArray formula f setNullAsZero true 设置为true String res f getValueSArray val1当做Double 0 计算 得出a 0 assertEquals 应该相等 0 00000000 res 0 0 val1当做Double 0 计算 得出b 0 assertEquals 应该相等 0 00000000 res 1 0 如果上例中setNullAsZero false 因为null值无法参与运算 那么得到的结 果为空 对于setNullAsZero函数 需要注意的是 NULL值当作Zero值来处理仅 仅是指在运算过程中 不适用于返回值为NULL时的处理 例如 String formula a val1 FormulaParseFather f new FormulaParse f addVariable val1 null f setExpress formula f setNullAsZero true String res f getValue val1当做Double 0 计算 但结果res为空值 如果上例中 想要返回0 则可以这么改写公式 String formula a toNumber val1 FormulaParseFather f new FormulaParse f addVariable val1 null f setExpress formula f setNullAsZero true String res f getValue 结果res为0 00000000 当NULL值参与字符串连接时 NULL值自动被当作空值处理 setNullAsZero此时对运算结果无任何影响 例如 null dddd null null null dddd 上述两个公式均应该返回 dddd 关于NULL值 空值之间区别另一个需要注意的地方是在写IIF函数时 比 较条件到底是NULL还是空值 需要根据实际场景决定 一般getColValue 等数 据库查询函数如果无法查到值返回的是null值 例如 fkdw iif val2 null val2 is zero val2 fkdw iif val2 val2 is zero val2 iif getColValue hyca viewobj 第 11 页 viewchinaname pk viewobj pk viewobj null pk viewobj getColValue hyca viewobj viewchinaname pk viewobj pk viewobj 7 如何进行列操作如何进行列操作 公式支持列操作 即列之间的 currentMny initMny 下面是完整的代码示例 FormulaParseFather f new nc ui pub formulaparse FormulaParse f setExpress a sum cchmny cchmny 2 cchmny String v2 new String 3 v2 0 1 row value v2 1 2 row value v2 2 3 Map map new HashMap map put cchmny v2 f setDataSArray map String res f getValueS assertEquals 应该相等 4 0 res 0 assertEquals 应该相等 8 0 res 1 assertEquals 应该相等 12 0 res 2 8 利用自定义函数扩展公式功能利用自定义函数扩展公式功能 你可以在公式中加入自定义函数 为了这个目的 需要做两件事情 1 从nc vo pub expression function NcInnerFunction继承自己的函数处理类 第 12 页 下面的例子说明了如何编写自己的函数处理类 public class MyFunction extends NcInnerFunction public MyFunction numberOfParameters 0 函数参数的个数 函数具体的运算 param中是具体的参数 public Object function List param throws ParseException if param null param size 0 throw new ParseException 错误 参数个数不对 mon 不需要参数 UFDate date new UFDate return String valueOf date getMonth 可以看出 主要在于编写function 函数 这个函数实现了具体的功能 即如 何对传入的参数进行处理 2 在公式执行器中加入自定义函数直接调用addFunction 函数加入你的函 数类即可 funname即为你定义函数在公式中的名称 f addFunction funname new yourFunctionClass 完成了上述两步工作 你就可以直接在你的公式中使用自定义的函数了 9 外接函数的使用外接函数的使用 本公式解析器支持外接函数 即可以调用任何一个类中的函数 只要给出 公式中函数名 类名 类中函数名 返回参数类型 函数参数类型等 就可以 实现在公式中调用外接函数 比如下面的公式就调用了 nc vo pub expression test Customfunction1类的combineString函数 FormulaParseFather f new nc ui pub formulaparse FormulaParse f setSelfMethod combine 公式中函数名 nc vo pub expression test Customfunction1 类名 combineString 类中函数名 ArrayList class 返回参数类型 new Class String class String class 函数参数类型 f setExpress a combine cchmny down List v2 new ArrayList v2 add cut row value 第 13 页 v2 add go row value v2 add step Map map new HashMap map put cchmny v2 f setDataSArray map String res f getValueS assertEquals Should equal cut down res 0 10 运算符重载运算符重载 目前公式解析器支持下列运算符重载 运算符符号相应接口 加 IAddOperator public Object add Object obj 减 ISubOperator Object sub Object obj 乘 IMulOperator Object multiply Object obj 除 IDivOperator Object div Object obj 另外如果用户对象要在公式中进行比较运算 请直接实现 java lang Comparable接口 下面是一个操作符重载的示例 public class TestVO implements IAddOperator public String name public int age public TestVO String name int age this name name this age age 运算符重载 public Object add Object obj throws Exception TestVO param2 TestVO obj String sname name param2 name int sage age param2 age TestVO res new TestVO sname sage return res 这样便可以在公式里对TestVO进行加法的运算 FormulaParseFather f new nc ui pub formulaparse FormulaParse f addVariable v3 new UFDouble 3 0 f setExpress a vo1 vo2 Map map initVarMap f setDataSArray map 第 14 页 Object res f getValueO assertEquals Should equal cch1cch2 TestVO res 0 name assertEquals Should equal 48 TestVO res 0 age 其中nitVarMap 函数对vo1和vo2做了初始化 private Map initVarMap List v1 new ArrayList v1 add new TestVO cch1 24 row value v1 add new TestVO hey1 25 row value v1 add new TestVO xuc1 25 List v2 new ArrayList v2 add new TestVO cch2 24 row value v2 add new TestVO hey2 25 row value v2 add new TestVO xuc2 23 Map map new HashMap map put vo1 v1 map put vo2 v2 return map 11 公式简单调试公式简单调试 公式解析器通过debug函数 可以实现简单的调试功能 主要为了帮助分析 公式每一步运行的情况 确定错误位置 请看下面debug函数用法示例 比如需要调试的公式如下 A cvn table selectfield wherefield pkvalue B ZeroIfNull A C 10 现在发现B字段就是没有得到值 那么首先就要确认A是否正确的从数据库 查询到了值 添加调试语句如下 A cvn table selectfield wherefield pkvalue tempvar debug Variable A A B ZeroIfNull A C 10 也可以顺便输出B的值 A cvn table selectfield wherefield pkvalue tempvar debug Variable A A B ZeroIfNull A C 10 tempvar debug Variable B B 注意上面的tempvar是一个临时变量 请务必加上且不要和公式变量及模 板KEY重复 多个调试语句可以使用同一个临时变量 主要为了防止模板混淆 第 15 页 运行程序执行公式 便会输出调试记录形如 公式调试 Variable A 45 23 公式调试 Variable B 这样就知道错误大概在什么地方了 第 16 页 附录附录 1 公式解析器内置变量列表公式解析器内置变量列表 null Null EACH WHOLE UPPER LOWER DEPT CTC SUBF 以上为公式内置变量 注意自定义变量不可与内置变量重名 附录附录 2 公式解析器内置公式列表公式解析器内置公式列表 1 数学运算函数数学运算函数 sin num 功能 正弦函数 参数 num 数值 或一列数 返回值 Double 或内含Double型ArrayList 下同 示例 sin 23 List list1 new ArrayList list1 add new UFDouble 2 3 list1 add new UFDouble 2 3 sin list1 cos num 功能 余弦函数 参数 num 数值 或一列数 返回值 Double 示例 cos 23 List list1 new ArrayList list1 add new UFDouble 2 3 list1 add new UFDouble 2 3 cos list1 exp num 功能 幂数函数 参数 num 数值 或一列数 返回值 Double 示例 exp 23 List list1 new ArrayList list1 add new UFDouble 2 3 第 17 页 list1 add new UFDouble 2 3 exp list1 sqrt num 功能 平方根函数 参数 num 数值 或一列数 返回值 Double 示例 sqrt 23 List list1 new ArrayList list1 add new UFDouble 2 3 list1 add new UFDouble 2 3 sqrt list1 log num 功能 对数函数 参数 num 数值 或一列数 返回值 Double 示例 log 23 List list1 new ArrayList list1 add new UFDouble 2 3 list1 add new UFDouble 2 3 log list1 tg num 功能 正切函数 参数 num 数值 或一列数 返回值 Double 示例 tg 23 List list1 new ArrayList list1 add new UFDouble 2 3 list1 add new UFDouble 2 3 tg list1 ctg num 功能 余切函数 参数 num 数值 或一列数 返回值 Double 示例 ctg 23 List list1 new ArrayList list1 add new UFDouble 2 3 list1 add new UFDouble 2 3 ctg list1 asin num 功能 反正弦函数 第 18 页 参数 num 数值 或一列数 返回值 Double 示例 asin 23 List list1 new ArrayList list1 add new UFDouble 2 3 list1 add new UFDouble 2 3 asin list1 acos num 功能 反余弦函数 参数 num 数值 或一列数 返回值 Double 示例 acos 23 List list1 new ArrayList list1 add new UFDouble 2 3 list1 add new UFDouble 2 3 acos list1 atan num 功能 反正切函数 参数 num 数值 或一列数 返回值 Double 示例 atan 23 List list1 new ArrayList list1 add new UFDouble 2 3 list1 add new UFDouble 2 3 atan list1 max Object Object 功能 比较两个对象的大小 返回最大值 如果传入的是两个ArrayList 那么一一对应比较 返回结果也为ArrayList 参数 对象1 对象2 要求两个对象为可比较或已实现比较操作符重载 返回值 Object 示例 max 23 23 34 56 返回34 56 List list1 new ArrayList list1 add new UFDouble 66 list1 add new UFDouble 88 List list2 new ArrayList list1 add new UFDouble 45 list1 add new UFDouble 100 max list1 list2 返回ArrayList 66 100 min Object Object 功能 比较两个对象的大小 返回最小值 如果传入的是两个ArrayList 那么一一对应比较 返回结果也为ArrayList 第 19 页 参数 对象1 对象2 要求两个对象为可比较或已实现比较操作符重载 返回值 Object 示例 min 23 23 34 56 返回23 23 List list1 new ArrayList list1 add new UFDouble 66 list1 add new UFDouble 88 List list2 new ArrayList list1 add new UFDouble 45 list1 add new UFDouble 100 min list1 list2 返回ArrayList 45 88 abs num 功能 绝对值函数参数 num 数值 或一列数返回值 Double 示例 abs 23 List list1 new ArrayList list1 add new UFDouble 2 3 list1 add new UFDouble 2 3 abs list1 ln num 功能 对数函数 参数 num 数值 或一列数 返回值 Double 示例 ln 23 List list1 new ArrayList list1 add new UFDouble 2 3 list1 add new UFDouble 2 3 ln list1 2 条件判断函数条件判断函数 iif condition thenvalue elsevalue 功能 根据不同的条件取不同的值 条件判断函数 参数 condition 一个逻辑值或逻辑表达式 thenvalue 值对象 如果condition为true 返回此对象 elsevalue 值对象 如果condition为false 返回此对象 返回值 Object 取决于thenvalue 及elsevalue 例一 对字符串null值的判断 FormulaParseFather f new nc ui pub formulaparse FormulaParse f setExpress iif cchmny null null notnull String v2 new String 3 v2 0 空字符串为null v2 1 67 非null 第 20 页 v2 2 8 非null Map map new HashMap map put cchmny v2 f setDataSArray map String res f getValueS assertEquals 应该相等 null res 0 assertEquals 应该相等 notnull res 1 assertEquals 应该相等 notnull res 2 例二 对象null值的判断 FormulaParseFather f new nc ui pub formulaparse FormulaParse f setExpress iif cchmny null null notnull List v2 new ArrayList v2 add null null v2 add new UFDouble 4 5 not null Map map new HashMap map put cchmny v2 f setDataSArray map String res f getValueS assertEquals 应该相等 null res 0 assertEquals 应该相等 notnull res 1 例三 condition为非逻辑值时 0为true getColValue ycca xlinvcost vinvmanid pk xlcost pk xlcost getColValue2 tablename fieldname pkfield1 pkvalue1 pkfield2 pkvalue2 功能 根据主键从数据库查询特定字段的值 参数 tablename 表名 fieldname 要查询的字段名 pkfield1 主键字段1名 pkvalue1 主键1的值 pkfield2 主键字段2名 pkvalue2 主键2的值 返回值 String 示例 vinvmanid getColValue2 xx table xxname pk corp pk corp pk glorgbook pk glorgbook getColNmV tablename fieldname pkfield pkvalue 功能 根据主键从数据库查询特定字段的值 参数 tablename 表名 fieldname 要查询的字段名 pkfield 主键字段名 pkvalue 主键的值 返回值 UFDouble 示例 mny getColNmV table mny pk item1 pk item1 如果希望返回整数 可在返回值上加int函数 cvs tablename fieldname pkfield pkvalue 请参考getColValue cvn tablename fieldname pkfield pkvalue 请参考getColNmv 第 22 页 ass freevalueID checktype 功能 会计平台中辅助核算 从gl freevalue中返回checkvalue 参数 字符串或Number或者相应的ArrayList 示例 String formula a ass var2 DEPT FormulaParseFather f new nc ui pub formulaparse FormulaParse f addVariable var2 1001AA10000000007RL0 f setExpress formula Object result f getValueAsObject assertEquals 应该相等 1001AA00000000000056 result toString 上面的变量DEPT表示 部门 相应checktype为 00010000000000000002 也可用字符串 String formula a ass var2 DEPT FormulaParseFather f new nc ui pub formulaparse FormulaParse f addVariable var2 1001AA10000000007RL0 f setExpress formula Object result f getValueAsObject assertEquals 应该相等 1001AA00000000000056 result toString 关于数据库函数的嵌套关于数据库函数的嵌套 注意 数据库查询函数现在支持嵌套 但是对于非基本档案表不推荐使用 因为嵌套函数效率会稍差一些 除非业务需要 比如 a getColValue xx contrasttable basicinfovalue basicinfopk ASS KHBm intID0KHB DEPT 或者 a getColValue bd deptdoc deptname pk deptdoc 1002A A00000000000006 4 字符串相关函数字符串相关函数 chatAt String int 功能 取得传入字符串得第int个字符 参数 字符串或字符串ArrayList 示例 String formula a charAt cch nihao 4 FormulaParseFather f new nc ui pub formulaparse FormulaParse f setExpress formula String result f getValue 第 23 页 assertEquals 应该相等 n result endsWith String String 功能 取得传入字符串得第int个字符 参数 字符串或字符串ArrayList 示例 String formula a charAt cch nihao 4 FormulaParseFather f new nc ui pub formulaparse FormulaParse f setExpress formula String result f getValue assertEquals 应该相等 n result equalsIgnoreCase String String 可参考String类的相关函数 不再赘述 indexOf String String 可参考String类的相关函数 不再赘述 lastIndexOf String String 可参考String类的相关函数 不再赘述 length String 可参考String类的相关函数 不再赘述 startsWith String String 可参考String类的相关函数 不再赘述 toLowerCase 可参考String类的相关函数 不再赘述 toUpperCase 可参考String类的相关函数 不再赘述 left String int 可参考String类的相关函数 不再赘述 right String int 可参考String类的相关函数 不再赘述 mid String int int 可参考String类的相关函数 不再赘述 第 24 页 5 日期函数日期函数 date year mon day yearOf Date monOf Date dayOf Date 6 类型转换函数类型转换函数 int String Number 功能 将传入的字符串或数字转换为整型 参数 数字字符串或者数值型 返回值 int 示例 int 3 44 List list1 new ArrayList list1 add new UFDouble 2 3 list1 add new UFDouble 2 3 toString list1 toString Object 功能 将传入的Object转换为字符 参数 可转换为字符串的Object 返回值 String 示例 toString new UFDouble 3 44 List list1 new ArrayList list1 add new UFDouble 2 3 list1 add new UFDouble 2 3 toString list1 toNumber String Number 功能 将传入的String或数字转换为UFDouble 参数 字符串或数字 或一列字符串 数字 返回值 Double 示例 toNumber 23 List list1 new ArrayList list1 add 4 567 list1 add 3 567 toNumber list1 第 25 页 7 货币金额函数货币金额函数 getChineseCurrency Object 功能 将传入的字符串或数字转换为大写金额 参数 字符串或Number或者相应的ArrayList 示例 String formula a getChineseCurrency var FormulaParseFather f new nc ui pub formulaparse FormulaP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论