Kettle实战100篇第21篇JavaScript内置函数说明
我们在使⽤JavaScript组件的时候,在左侧核⼼树对象栏中可以看到Kettle为我们提供了很多简洁强⼤的内置函数,帮助我们在写脚本的时候对数据、参数变量等能很轻松的做处理,体验编码的感觉.本篇将详细介绍JavaScript组件中的函数功能
脚本组件包含的函数主要包括六⼤类,分别是:
字符串类型的函数(String Functions)
浮点型的函数(Numeric Functions)
⽇期类型函数(Date Functions)
逻辑判断型函数(Logic Functions)
特殊的函数(Special Functions)
⽂件处理类函数(File Functions)
字符串类型函数(String Functions)
顾名思义,字符串类型的函数肯定是针对字符串类型的参数、变量进⾏处理操作的函数
⽇期转字符串(date2str)
⽇期转字符串函数date2str主要有4个⽅法,分别是:
date2str(date):传⼊⽇期实例,转换成字符串类型
date2str(date,format):传⼊⽇期和格式化参数,进⾏格式化转换
date2str(date,format,iso):传⼊⽇期和参数格式化及ISO代码进⾏转换,(DE = German, EN = English, FR = France, …)
date2str(date,format,iso,zone):传⼊时区进⾏格式化,例如北京时区(GMT+8)
⽇期格式化参数format参数类型供参考:
yy / yyyy - 06 / 2006
MM / MMM / MMMMM - 11 / Nov / November
d / dd - 1 / 01
E / EEEE - Tue / Tuesday
hh / HH - 11 / 23
m / mm - 5 / 05
s / ss - 8 / 08
代码⽰例:
var dValue = new Date();
writeToLog(date2str(dValue,""));
writeToLog(date2str(dValue," HH:mm:ss"));
writeToLog(date2str(dValue,"","DE"));
writeToLog(date2str(dValue," HH:mm:ss","EN"));
writeToLog(date2str(dValue," HH:mm:ss","ZH", "GMT+8"));
writeToLog(date2str(dValue,"yyyy-MM-dd HH:mm:ss","ZH", "GMT+8"));
以上代码在控制台将会输出如下:
2019/08/19 10:12:56 - JavaScript代码.0 - 19.08.2019
2019/08/19 10:12:56 - JavaScript代码.0 - 19.08.2019 10:12:56
2019/08/19 10:12:56 - JavaScript代码.0 - Mo.Aug.2019
2019/08/19 10:12:56 - JavaScript代码.0 - 19.08.2019 10:12:56
2019/08/19 10:12:56 - JavaScript代码.0 - 19.08.2019 10:12:56
2019/08/19 10:12:56 - JavaScript代码.0 - 2019-08-19 10:12:56
转义HTMLescapeHtml(html)
代码如下:
var html="<h1>我是H2标题</h2>";
writeToLog(escapeHtml(html))
最终输出
2019/08/19 10:16:13 - JavaScript代码.0 - <h1>我是H2标题</h2>;转义SQL(escapeSQL(var))
var str1 = "SELECT * FROM CUSTOMER WHERE NAME='" + escapeSQL("McHale's Navy") + "'"; writeToLog(str1)
该函数会把单引号转成双引号,输出结果如下:
2019/08/19 10:18:59 - JavaScript代码.0 - SELECT * FROM CUSTOMER WHERE NAME='McHale''s Navy'构造定长字符串(fillString(char,length))
代码⽰例如下:
writeToLog(fillString("x",10));
writeToLog(fillString("A",3));
最终会输出10个X和3个A,输出结果如下:
2019/08/19 10:24:08 - JavaScript代码.0 - xxxxxxxxxx
2019/08/19 10:24:08 - JavaScript代码.0 - AAA
需要注意的是第⼀个是⼀个char类型的单字符,不能是字符串
统计字符串出现频次(getOcuranceString(str,searchStr))
第⼀个参数是要搜索的完整字符串,第⼆个参数是要搜索统计的字符串
代码⽰例:
var sef='2007-09-11';
writeToLog(getOcuranceString(sef,'0'))
writeToLog(getOcuranceString(sef,'00'))
我们分别统计字符串0和00最终出现的次数,此时,⽇志最终打印的次数是3和1:
2019/08/19 10:28:45 - JavaScript代码.0 - 3
2019/08/19 10:28:45 - JavaScript代码.0 - 1
获取字符串下标索引(indexOf)
获取下标索引主要有2个重构函数,分别是:
indexOf(string,subString):获取出现字符串的索引开始位置
indexOf(string,subString,fromIndex);指定开始位置,获取字符串索引开始位置代码⽰例:
var str1= "Hello Pentaho!";
var str2= indexOf(str1, "Pentaho");
var str3= indexOf(str1, "o", 7);
writeToLog("Input : " + str1);
writeToLog("Index of 'Pentaho' : " + str2);
writeToLog("index of 'o', search from position 7 : " + str3);
最终控制台输出:
2019/08/19 10:34:16 - JavaScript代码.0 - Input : Hello Pentaho!
2019/08/19 10:34:16 - JavaScript代码.0 - Index of 'Pentaho' : 6
2019/08/19 10:34:16 - JavaScript代码.0 - index of 'o', search from position 7 : 12
⾸字母⼤写(initCap)
对指定字符串⾸字母⼤写处理,来看代码⽰例:
var str1 = "my home";
writeToLog(initCap(str1));
writeToLog(initCap('test a aaa cw'));
writeToLog(initCap('myhome'));
此时,最终控制台输出如下:
2019/08/19 10:41:27 - JavaScript代码.0 - My Home
2019/08/19 10:41:27 - JavaScript代码.0 - Test A Aaa Cw
2019/08/19 10:41:27 - JavaScript代码.0 - Myhome
字符串转⼩写(lower)
将传⼊字符串全部转⼩写
代码如下:
var str1= "Hello World!";
var str2= lower(str1);
writeToLog("Input:" + str1);
writeToLog("Converted to LowerCase:" + str2);
writeToLog(lower('DDDHelloSWxss'))
响应内容
2019/08/19 10:43:09 - JavaScript代码.0 - Input:Hello World!
2019/08/19 10:43:09 - JavaScript代码.0 - Converted to LowerCase:hello world!
2019/08/19 10:43:09 - JavaScript代码.0 - dddhelloswxss
字符串填充左侧(lpad(string,char,length))
⽤指定长度的给定字符将字符串填充到左侧
参数定义:
1:传⼊字符串
2:填充单字符
3:填充单字符长度
如果length长度超过给定字符串的长度,将对填充字符串做减法,例如:
var str1= "Hello World!";
writeToLog("Lpad:" + lpad(str1, "x",20));
此时,最终输出结果为:
2019/08/19 10:46:38 - JavaScript代码.0 - Lpad:xxxxxxxxHello World!
javascript说明最终的完成长度是20个字符长度,因此填充的单字符x并没有填充20次
如果length长度⼩于给定字符串的长度,则默认返回原字符串,不做填充,代码⽰例:
var str1= "Hello World!";
writeToLog("Lpad:" + lpad(str1, "x",5));
此时最终的输出结果为:
2019/08/19 10:46:38 - JavaScript代码.0 - Lpad:Hello World!
去空字符(ltrim)
从左侧开始去除空字符串
数字转字符串(num2str)
给定数字,转换为字符串,主要有3个构造函数:
num2str(num):转换num数字为字符串
num2str(num,format):格式化数字为指定字符串
num2str(num,format,iso):按照本地ISO编码进⾏格式化
代码⽰例如下:
var d1 = 123.40;
var d2 = -123.40;
writeToLog(num2str(d1));
writeToLog(num2str(d1, "0.00"));
writeToLog(num2str(d1, "0.00", "EN"));
writeToLog(num2str(d2, "0.00;(0.00)", "EN"));
最终控制台输出:
2019/08/19 11:00:17 - JavaScript代码.0 - 123.4
2019/08/19 11:00:17 - JavaScript代码.0 - 123.40
2019/08/19 11:00:17 - JavaScript代码.0 - 123.40
2019/08/19 11:00:17 - JavaScript代码.0 - (123.40)
XML保护标签函数转换(protectXMLCDATA)
传⼊给定字符串,添加标准保护,代码⽰例
var str1 = "my home";
writeToLog(protectXMLCDATA(str1));
此时,将会给变量str1加上保护标签
2019/08/19 11:02:09 - JavaScript代码.0 - <![CDATA[my home]]>
移除字符串中CRLF字符(removeCRLF(str))
给定字符串中删除CR END LF的字符串
替换字符串(replace)
替换字符串主要包括两个构造函数:
replace(str,searchStr,replaceStr):从指定字符串中查询,然后替换
replace(str,firstSearch,firstReplace,):⽆限查询替换代码⽰例如下:
var str1 = "Hello World, this is a nice function";
var str2 = replace(str1,"World", "Folk");
writeToLog(str2);
var str2 = replace(str1,"World", "Folk", "nice","beautifull");
writeToLog(str2);
最终输出:
2019/08/19 11:10:21 - JavaScript代码.0 - Hello Folk, this is a nice function
2019/08/19 11:10:21 - JavaScript代码.0 - Hello Folk, this is a beautifull function
字符串右侧填充(rpad(string,char,length))
使⽤⽅法同lpad,只是⼀个是左侧,⼀个是右侧
去除空字符(右侧)(rtrim)
正则切分(str2RegExp)
出⼊⼀个正则表达式,对string字符串进⾏Split操作.代码如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论