历史版本43 :文本函数概述 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

          FineBI版本         JAR 包功能变动
  5.1-
-
5.1.72020-11-05
函数释义优化&明确函数参数合法性
5.1.112021-04-02实时数据公式校验加强
5.1.12-抽取数据公式校验加强

1.2 使用范围


使用位置
自助数据集新增列过滤
仪表板
添加计算字段

2. TRIM-清除空格编辑

1)概述

语法TRIM (text)清除文本首尾所有的空格
参数1text需要清除空格的文本

2)注意事项

支持使用一个文本参数。

3)示例

公式结果备注
TRIM(" Monthly Report")Monthly Report

3. FORMAT-改变格式编辑

1)概述

语法FORMAT(object,format)返回 object 的 format 格式
参数1object需要被格式化对象,可以是 String ,数字,Object (常用的有Date, Time)。注:实时数据只支持日期。
参数2format格式化的样式

2)注意事项

可使用两个参数,抽取数据第一个参数为任意类型,第二个参数类型为文本

实时数据中第一个参数为日期类型,第二个参数为文本类型。

FORMAT 对日期的操作,日期的大小写必须按照年份小写 yy 或 yyyy,月份大写 M 或 MM,日期小写 d 或 dd。

3)实例

公式结果备注
FORMAT(1234.5, "#,##0.00")1234.50
FORMAT(1234.5, "#,##0") 1234
FORMAT(1234.5, "¥#,##0.00") ¥1234.50


FORMAT(1.5, "0%") 150%
FORMAT(1.5, "0.000%")150.000%
FORMAT(6789, "##0.0E0") 6.789E3
FORMAT(6789, "0.00E00")6.79E03
FORMAT(date(2007,1,1), "EEEEE, MMMMM dd, yyyy")星期一,一月 01,2007
FORMAT(date(2007,1,13), "MM/dd/yyyy") 01/13/2007
FORMAT(date(2007,1,13), "M-d-yy") 1-13-07
FORMAT(time(16,23,56), "h:mm:ss a") 4:23:56 下午

4. ENDWITH编辑

1)概述

语法ENDWITH(str1,str2)判断字符串 str1 是否以 str2 结束
参数1str1字符串
参数2str2字符串

2)注意事项

  • str1 和 str2 都是大小写敏感的。

  • 支持使用两个任意参数。

  • ENDWITH 函数为文本函数,仅能判断文本,不支持对时间类型进行判断。

3)实例

公式结果备注
ENDWITH("FineReport","Report")true
ENDWITH("FineReport","Fine")false
ENDWITH("FineReport","report")false

5. NUMTO-数值转为中文数值编辑

1)概述

语法NUMTO(number,bool)或 NUMTO (number)返回 number 的中文表示
参数1number数字
参数2bool 用于选择中文表示的方式

2)注意事项

支持设置两个参数,第一个参数为数值类型或者类型,第二个缺省参数可为布尔类型。

实时数据不支持该函数。

参数中的true(TRUE)、false(FALSE)同时支持大小写,且大小写同时蓝色标记。

3)示例

公式结果备注
NUMTO(2345,true)二三四五
NUMTO(2345,false)二千三百四十五
NUMTO(2345)二千三百四十五

6. LEFT-取前几个字符编辑

1)概述

语法LEFT(text,num_chars)根据指定的字符数返回文本串中的第一个或前几个字符
参数1text包含需要选取字符的文本串或单元格引用
参数2num_chars指定返回的字符串长度

2)注意事项

num_chars 的值必须等于或大于 0。如果 num_chars 大于整个文本的长度,LEFT 函数将返回所有的文本。如果省略 num_chars,则默认值为 1 。

支持使用两个参数,第一个为任意类型,第二个为数值类型,可以缺省。

3)示例

公式结果备注
LEFT("Finesoftware",8)Finesoft
LEFT("Finesoftware")F

7. SUBSTITUTE-替换指定字符编辑

1)概念

语法SUBSTITUTE(text,old_text,new_text,instance_num)用 new_text 替换文本串中的 old_text 
参数1text文本串
参数2new_text新文本串
参数3old_text旧文本串
参数4instance_num指定位置

2)注意事项

1、如果需要替换字段值中的指定文本,则使用 SUBSTITUTE 函数;

2、如果需要替换字段值中指定位置上的任意文本,则使用 REPLACE 函数。

3、实时数据中无法使用此函数。

4、可使用四个任意类型参数,其中第四个参数可以缺省

3)示例

公式结果备注
SUBSTITUTE("data base","base","model")data model
SUBSTITUTE("July 28, 2000","2","1",1)July 18, 2000
SUBSTITUTE("July 28, 2000","2","1")July 18, 1000
SUBSTITUTE("July 28, 2000","2","1",2)July 28, 1000

8. MID-取指定位置部分字符编辑

1)概念

语法MID(text,start_num,num_chars)返回文本串中从指定位置开始的一定数目的字符,该数目由用户指定
参数1Text包含要提取字符的文本串
参数2Start_num文本中需要提取字符的起始位置。文本中第一个字符的start_num为1,依此类推
参数3Num_chars返回字符的长度

2)注意事项

1、支持设置三个参数,第一个参数为任意类型,第二个、第三个为数值类型。

2、如果 start_num 大于文本长度,MID 函数返回“”(空文本)。

3、如果 start_num 小于文本长度,并且 start_num 加上 num_chars 大于文本长度,MID 函数将从 start_num 指定的起始字符直至文本末的所有字符。

4、如果 start_num 小于 1 ,MID函数返回错误信息*VALUE! 。 

5、如果 num_chars 是负数,MID函数返回错误信息*VALUE!。

3)示例

公式结果备注
MID("Finemore software",10,8)software
MID("Finemore software",30,5)(空文本)
MID("Finemore software",0,8)*VALUE!
MID("Finemore software",5,-1)*VALUE!

9. EXACT-比较两组文本字符编辑

1)概述

语法EXACT(text1,text2)检测两组文本是否相同。如果完全相同,EXACT 函数返回 TRUE ;否则,返回 FALSE 
参数1Text1需要比较的第一组文本
参数2Text2需要比较的第二组文本

2)注意事项

1、EXACT 函数可以区分大小写,但忽略格式的不同。同时也可以利用 EXACT 函数来检测输入文档的文字。

2、可使用两个任意类型参数。

3)示例

公式结果备注
EXACT("Spreadsheet","Spreadsheet")TRUE 
EXACT("Spreadsheet","S preadsheet")FALSE 
EXACT("Spreadsheet","spreadsheet")FALSE 

10. TOINTEGER编辑

1)概述

语法TOINTEGER(text)将文本转换成Integer对象
参数1Text需要转换的文本

2)注意事项

可使用一个任意类型参数。

3)示例

公式结果备注
TOINTEGER("123")new Integer(123)

11. REPEAT-重复显示字符编辑

1)概述

语法REPEAT(text,number_times)根据指定的次数重复显示文本
参数1text需重复的文本
参数2number_times重复次数

2)注意事项

支持使用两个参数,第一个为任意类型,第二个为数值类型。

3)示例

公式结果备注
REPEAT("$",4)$$$$
REPEAT(B10,3)你好你好你好单元格B10的内容为'你好'

12. SPLIT-分割字符编辑

1)概念

语法SPLIT(String1,String2 )返回由String2分割String1组成的字符串数组
参数1String1以双引号表示的字符串
参数2String2以双引号表示的分隔符。例如逗号","

2)注意事项

1、不支持实时数据中使用。

2、支持使用两个任意类型参数。

3)示例

公式结果备注
SPLIT("hello,world,yes",",")"hello","world","yes"
SPLIT("this is very good"," ")"this","is","very","good"

13. UPPER-转化为大写编辑

1)概述

语法UPPER(text)将文本中所有的字符转化为大写
参数1Text需要转化为大写字符的文本

2)注意事项

支持使用一个文本类型的参数。

3)示例

公式结果备注
UPPER("notes")NOTES

14. RIGHT-取最后的几个字符编辑

1)概述

语法RIGHT(text,num_chars)根据指定的字符数从右开始返回文本串中的最后一个或几个字符
参数1Text包含需要提取字符的文本串或单元格引用
参数2Num_chars指定 RIGHT 函数从文本串中提取的字符数,Num_chars 不能小于 0

2)注意事项

1、支持使用两个参数,第一个为任意类型,第二个为数值类型,可以缺省。

2、如果 num_chars 大于文本串长度,RIGHT 函数将返回整个文本。如果不指定 num_chars ,则默认值为 1 。

3)示例

公式结果备注
RIGHT("It is interesting",6)esting
RIGHT("Share Holder")r
RIGHT("Huge sale",4)sale

15. TODOUBLE编辑

1)概述

语法TODOUBLE(text)将文本转换成 Double 对象
参数1Text需要转换的文本

2)注意事项

可使用一个任意类型参数

3)示例

公式结果备注
TODOUBLE("123.21")new Double(123.21)

16. INDEXOF-字符串 str1 在 index 位置上的字符编辑

1)概述

语法INDEXOF(str1,index)

返回字符串str1在index位置上的字符

参数1str1字符串
参数2index位置

2)注意事项

index是从 0 开始计数的。

函数返回的数据类型为文本型。例如使用过滤条件INDEXOF(单据编码,6)="8",由于函数返回的数据类型为文本类型,因此过滤条件中的数值 8 需要加双引号,改成文本类型,此时才能使用等号,如下图所示:

1605771455703587.png

支持使用两个参数,第一个为任意类型,第二个为数值类型。

3)示例

公式结果备注
INDEXOF("FineBI",0)F
INDEXOF("FineBI",2)n
INDEXOF("FineBI",5)I
INDEXOF(["a","b","c"], 1)b

17. FIND-返回指定字符的位置排序编辑

1)概述

语法
FIND(find_text,within_text,start_num)

从指定的索引 (start_num) 处开始,返回第一次出现的指定子字符串 (find_text) 在此字

符串 (within_text) 中的索引。实时数据中如少于三个参数需添加缺省值。

参数1find_text

需要查找的文本

参数2within_text

包含需要查找文本的文本

索引从1开始。如果省略start_num,则假设值为1。 

参数3start_num

指定进行查找字符的索引位置

注:实时数据中不支持为负值。

2)注意事项

第一个参数任意类型,第二个参数任意类型,第三个参数可缺省,若需要,必须为数值格式。

Find 函数如果需要查找特殊符号位置,需要注意,详情参见:使用时需处理的特殊字符

3)示例

公式结果
备注
FIND("I","Information")1
返回"I"在"Information"中的位置即返回值为 1
FIND("o","Information",2)4参考下图
FIND("o","Information",-1)实时数据不支持该写法

1600067156971233.png

18. REPLACE-用其他文本来代替原始文本中的内容编辑

18.1 用法一

1)概述

语法
REPLACE(text,textorreplace,replacetext)根据指定的字符串,用其他文本来代替原始文本中的内容
参数1text需要被替换部分字符的文本或单元格引用
参数2textorreplace指定的字符串或正则表达式
参数3replacetext需要替换部分旧文本的文本

2)注意事项

支持使用三个任意类型参数

3)示例

公式结果备注
REPLACE("abcd","a","re")rebcd
REPLACE("a**d","**d","rose")arose

18.2 用法二

1)概述

语法REPLACE(old_text,start_num,num_chars,new_text)根据指定的字符数,用其他文本串来替换某个文本串中的部分内容
参数1Old_text需要被替换部分字符的文本或单元格引用
参数2Start_num需要用new_text来替换old_text中字符的起始位置
参数3Num_chars需要用new_text来替换old_text中字符的个数
参数4New_text需要替换部分旧文本的文本

2)注意事项

使用的四个参数,第一个需要是任意类型,第二个第三个需要是数值类型,第四个需要时任意类型。

3)实例

公式结果备注
REPLACE("0123456789",5,4,"*")0123*89
REPLACE("1980",3,2,"99")1999

19. CONCATENATE-拼接字符串编辑

1)概述

语法CONCATENATE(text1,text2,...)将数个字符串合并成一个字符串
参数1Text1,text2,...需要合并成单个文本的文本项

2)注意事项

可使用多个任意类型参数

3)示例

公式结果备注
CONCATENATE("Average ","Price")Average Price
CONCATENATE("1","2")12

20. 字符串转小写(LOWER)编辑

1)概述

语法LOWER(text)将所有的大写字母转化为小写字母
参数1text需要转化为小写字母的文本串

2)注意事项

LOWER 函数不转化文本串中非字母的字符

支持使用一个文本类型的参数。

3)示例

公式结果备注
LOWER("A.M.10:30")a.m.10:30
LOWER("China")china

21. 字符串长度(LEN)编辑

21.1 抽取数据

1)概述

语法LEN(args)返回文本串中的字符数长度
参数1args参数

2)注意事项

参数args为文本串时,空格也计为字符;参数args为数组时,直接返回数组长度。

3)示例

公式结果备注
LEN("Evermoresoftware")16
LEN("Evermore software")17
LEN(["a","b"])2

21.2 实时数据

1)概述

语法LEN(args)返回文本串中的字符数长度
参数1args参数

2)注意事项

参数 args 为文本串时,空格也计为字符。

仅支持一个参数。

3)示例

公式结果备注
LEN("Evermoresoftware")16
LEN("Evermore software")17

22. CHAR-对应数字的字符编辑

1)概述

语法CHAR(number)根据指定数字返回对应的字符,CHAR函数可将计算机其他类型的数字代码转换为字符
参数1number指定数字

2)注意事项

支持使用一个数值参数

3)示例

公式结果备注
CHAR(88)XCHAR 函数返回的字符类型为 Character 类型。如果想用 char(88) ="X" 作为条件判断的话,需要加上 CONCATENATE 函数将char(88) 的结果处理成 String 类型,才可满足条件判断,比如 CONCATENATE(char(88)) ="X"
CHAR(45)-

23. CODE-取文本对应的数字编辑

1)概述

语法CODE(text)计算文本串中第一个字符的数字代码。返回的代码对应于计算机使用的字符集。
参数1text

需要计算第一个字符代码的文本或单元格引用

2)注意事项

支持使用一个文本参数

3)示例

公式结果备注
CODE("S")83
CODE("Spreadsheet")83

24. PROPER编辑

1)概述

语法PROPER(text)将文本中的第一个字母和所有非字母字符后的第一个字母转化为大写,其他字母变为小写
参数1text需要转化为文本的公式、由双引号引用的文本串或是单元格引用

2)注意事项

  • 可使用一个文本参数

  • 实时数据无此函数

3)示例

公式结果备注
PROPER("Finemore Integrated Office")Finemore Integrated Office
PROPER("100 percent")100 Percent
PROPER("SpreaDSheEt")Spreadsheet

25. REGEXP-判断正则表达式编辑

25.1 抽取数据

用法一:

1)概述

语法REGEXP(str, pattern)字符串 str 是否与正则表达式 pattern 相匹配
参数1str字符串
参数2pattern正则表达式

2)注意事项

  • 若要使用\字符,需要再添加一个反斜杠。所以当公式为regexp(字符串,"\d")时会提示不合法,需写成regexp(字符串,"\\d"),如下图所示:

image.png

  • 两个文本类型参数

3)示例

公式结果备注
REGEXP("aaaaac","a*c")true
REGEXP("abc","a*c")false

本文以 \d 和 \w 为例,在自助数据集中使用该函数,其中 \d 表示匹配数字,\w 表示匹配字母或数字或下划线或汉字,如下图所示:

1578970972949231.png

更多正则表达式示例详情参见:正则表达式示例

用法二:

1)概述

语法REGEXP(str, pattern, intNumber)字符串 str 是否与具有给定模式 intNumber 的正则表达式 pattern 相匹配
参数1str字符串
参数2pattern正则表达式
参数3intNumber给定模式

2)注意事项

intNumber 的模式如下所示 :

通过设置intNumber为两种模式之和可以同时开启多种模式,如intNumber=1+2=3则表示同时开启 Unix行模式及不区分大小写的匹配模式

intNumber 模式概念
intNumber=1 UNIX_LINES 启用Unix行模式,在此模式下,"."、"^"、"$"的行为中仅识别" "行结束符
intNumber=2CASE_INSENSITIVE 启用不区分大小写的匹配。默认情况下,不区分大小写的匹配假定仅匹配US-ASCII字符集中的字符。可以通过指定UNICODE_CASE模式连同此模式来启用Unicode感知的、不区分大小写的匹配。
intNumber=4COMMENTS 启用允许使用空格和注释模式。此模式将忽略空格和在结束行之前以#开头的嵌入式注释。
intNumber=8MULTILINE 启用多行模式
intNumber=16LITERAL 启用文本分析的模式。启用此模式后,输入字符串就会作为字面值字符序列来对待。输入序列中的元字符或转义序列不具有任何特殊意义。CASE_INSENSITIVE 模式和 UNICODE_CASE 模式在与此模式一起使用时将对匹配产生影响。其他模式下无影响。
intNumber=32DOTALL 启用dotall模式,表达式"."可以匹配任何字符,包括行结束符。默认情况下,此表达式不匹配行结束符。
intNumber=64UNICODE_CASE 启用Unicode感知的大小写折叠。指定此模式并同时制定CASE_INSENSITIVE模式时,不区分大小写的匹配将以符合Unicode标准的方式完成。
intNumber=128CANON_EQ 启用规范等效模式,启用此模式后,当且仅当其完整规范分解匹配时,两个字符才可视为匹配。
  • 支持前两个参数为文本,第三个参数为数值类型

3)示例

公式结果公式说明
REGEXP("Aaaaabbbbc","a*b*c", 3)true

表示同时开启 Unix行模式及不区分大小写的匹配模式。因此返回 true

REGEXP("Aaaaabbbbc","a*b*c", 1)false表示同时开启 Unix行模式,由于区分大小写,因此返回 false
REGEXP("Abc","abc", 2)true表示开启不区分大小写模式,因此返回 true

REGEXP("Abc","abc", 2),如下图所示:
1607650422276643.png


25.2 实时数据

1)概述


语法REGEXP(str,pattern)字符串str是否与正则表达式pattern相匹配
参数1str字符串
参数2pattern正则表达式

2)注意事项

第一个参数为文本类型,第二个参数为文本类型。

3)示例

公式结果备注
REGEXP("aaaaac","a*c")true
REGEXP("abc","a+c")false

26. STARTWITH-判断字符串 str1 是否以 str2 开始编辑

1)概念

语法STARTWITH(str1,str2)判断字符串 str1 是否以 str2 开始
参数1str1字符串
参数2str2字符串

2)注意事项

  • str1 和 str2 都大小写敏感

  • 支持使用两个任意类型参数

3)示例

公式结果备注
STARTWITH("FineReport","Fine")true
STARTWITH("FineReport","Report")false