WML语言基础(WAP建站)六 wml标准函数库 这节会讨论标准的wml函数库。 6.1wml规则 这些标准函数库提供一个扩展wml语言的机制,这些特定的函数库必须遵循wml的规则。 支持的数据格式 下面的wml格式使用于程序的定义之中,这样能记录程序参数与回转值的格式。 booleanintegerfloatstringinvalid 除此之外,如果整数与浮点数参数值格式都能接受的话,则能使用number来记录参数格式,如果使用的格式是所支持的格式,则能用any来记录。 数据格式转换 函数库程序发生错误的处理方式和wml语言一样。 invalid程序参数会产生invalid的回传值。 程序的参数无法转成所需要使用参数格式,则会产生invalid的回传值。 与程序相关的错误得出回传一个适当的错误码,至于这个值就要看每个程序如何定义。 6.2lang函数库 名称:lang 说明:这个函数库所含的程序同wml语言的核心有很密切的关系。 abs 程序:abs()说明:回传给予数的绝对值。如果给予的数是整数,则回传整数。如果给予的数是浮点数,则回传浮点数。参数:=数字。回传值:数字或invalid。例外状况:vara=-3;varb=lang.abs(a);//b=3 min 范例:vara=-3varb=lang.abs(a);varc=lang.min(a.b);vard=lang.min(45、76.3);//d=45(ingteger)vare=lang.min(45、76.3);//e=45(ingteger) max 程序:max(1,2)说明:回传值给予的两个数之间的较大值,回传的值于格式同所选数值的值与格式相同,其选取的方式如下:wml运算符数据格式的整数与浮点数转换法则可用来确认数据格式,以便执行比较的动作。参数:1=数字2=数字回传值:数字或invalid例外状况:无范例:vara=-3;varb=lang.abs(a);//b=3varc=lang.min(a.b);vard=lang.min(45、76.3);//d=45(ingteger)vare=lang.min(45、76.3);//e=45(float) parseint 程序:parseint()说明:回传由字符串所定义的整数值,合法的整数语法由wml数值字符串文法或是近值整数是字所界定,下列为额外的解析法则:第一个字符不是由+、-或十进制数字当开头的话,解译结束。结果:解析过的字符串回转换整数值。范例:vari=lang.parseint("1234");//i=1234varj=lang.parseint("100m/s");//j=100 parsefloat 程序:parsefloat()说明:回传由字符串所定义的浮点数值,合法的浮点数语法由wml数值字符串文法或是近值整数实字所界定,下列为额外的解析法则:第一个字符无法解析成浮点数表达式,解析结束。结束:解析过的字符串回转换成浮点数。参数:=字符串回传值:浮点数或invalid例外状况:解析错误则传回invalid范例:vara=lang.parsefloat("123.7hz");//a=123.7varb=lang.parsefloat("7.34e2hz");//b=7.34e2varc=lang.parsefloat("70.0e-2f");//c=70.0e-2vard=lang.parsefloat("-1.c");//d=0.1vare=lang.parsefloat("100");//e=100.0varf=lang.parsefloat("number:5.5");//f=invalidvarg=lang.parsefloat("7.3emeters");//g=invalidvarh=lang.parsefloat("7.3e-m/s");//h=invalid isint 程序:isint()说明:如果各预的值能使用parseint()转成整数则回传布尔值ture,否则传回false。参数:=任意值回传值:布尔值或invalid例外状况:无范例:vara=lang.inint("-123");//turevara=lang.minint("123.33");//turevara=lang.minint("string");//falsevara=lang.minint("#123");//falsevara=lang.minint("invalid");//invalid isfloat 程序:isfloat()说明:如果各预的值能使用parseint()转成整数则回传布尔值ture,否则传回false。参数:=任意值回传值:布尔值或invalid例外状况:无范例:vara=lang.inint("-123");//turevara=lang.minint("123.33");//turevara=lang.minint("string");//falsevara=lang.minint("#123");//falsevara=lang.minint("invalid");//invalid maxint 程序:maxint()说明:传回最大的整数值。参数:无回传值:整数2147483647例外状况:无范例:vara=lang.minint(); minint 程序:minint()说明:传回最小的整数值参数:无回传值:整数-2147483647例外状况:无范例:vara=lang.minint(); float 程序:float()说明:如果有支持浮点数的话传回ture,没有的话传回false。参数:无回传值:布尔值例外状况:无范例:varfloatssupported=lang.float(); exit 程序:exit()说明:结束wml位码的解译然后回到调用wml解译器者的控制,并回传指定值,你可以使用这个程序来执行由一般程序的结束,而且wml位码的执行必须停止。参数:valre=任意值回传值:无,这个程序结束解译例外状况:无范例:lang.exit(":"+myval);//returnsastringlang,exit(invalid);//returnsinvalid abort 程序:abort(errordeion)说明:中止wml位码的解译然后回到调用wml解译器者的控制,并回传errordeion,你能使用这个程序执行不正常的中止,调用程序者检测到有严重错误,wml的执行并须中断。如果errordeion的格式为invalid,字符串invalid用代替errordeion的使用。参数:errordeion=字符串回传值:无,这个程序结束解译例外状况:无范例:lang.abort("error:"+errval);//errorstring radndom 程序:random()说明:回传一个正数的整数值,也就是说要大于或等于零,但必须要小于给定值,回传值是由近是正常分布所随机选取的值。参数:=整数回传值:整数或invalid例外状况:如果等于0,则程序回传0如果小于0,则程序回传invalid范例:vara=10;varb=lang.random(5.1)*a;//b=0..50varc=lang.random("string");//c=invalid reed 程序:seed(alue)说明:初始化需随机数字顺序并回传一个空字符串如果为0或正整数,给予的则用来初始化,反之则使用随机初始化的值。如果为浮点数,则会先使用float.int()来计算确切的整数值。参数:=整数回传值:字符串或invalid]例外状况:无范例:vara=lang.reed(123);//a=""varb=lang.random(20);//b=0..20varc=lang.seed("seed");//c=invalid(randomseed//leftunchanged) characterset 程序:characterset()说明:回传wml解译器所支持的字集,回传只是个整数用来记录由iana所设定的mibenum值,这个只能表示所有的字集。参数:无回传值:整数例外状况:无范例:varcharset=lang.characterset();//charset=4forlatinl 6.3float函数库 名称:float说明:这个函数库包含了典型与常用的浮点数算术程序。 int 程序:int()说明:回传给予值的整数部分。参数:=数字回传值:整数或invalid例外状况:无范例:vara=3.14;varb=float.in(a);//b=3varc=float.in(-2.8);//c=-2 floor 程序:floor()说明:回传整数值,这个只要最接近给予值但不能大于它。如果已经是个整数,其结果就是这个值本身。参数:=数字回传值:整数或invalid例外状况:无范例:vara=3.14;varb=float.in(a);//b=3varc=float.in(-2.8);//c=-3 ceil 程序:ceil()说明:回传一个只要最接近给予值但不能小于它的整数值。如果已经是个整数,其结果就是这个值本身。参数:=数字回传值:整数或invalid例外状况:无范例:vara=3.14;varb=float.in(a);//b=4varc=float.in(-2.8);//c=-2 pow 程序:pow(x,y)说明:回传x的y次方值。如果x是负数,则y必须为正数。参数:x=数字 y=数字回传值:浮点数或invlid例外状况:如果x==0而且y<0,则回传invalid如果x<0而且y不是个整数,则回传invalid范例:vara=3varb=float.pow(a,2);//b=9 round 程序:round()说明:传回最接近给予值的整数若两个整数值跟接近的程序相等,则选择比较大的数。若已经是个正数,其结果就是本身。参数:=数字回传值:整数或invalid例外状况:无范例:vara=float.round(3.5);//a=4varb=float.round(-3.5);//b=-3varc=float.round(0.5);//c=1vard=float.round(-0.5);//d=0 squt 程序:sqrt()说明:传回给予值的平方根近似值。参数:=浮点数回传值:浮点数或invalid例外状况:如果负数,则回传invlid范例:vara=4;varb=float.squt(a);//b=2.0varc=float.squt(5);//c=2.2360679775 maxfloat 程序:maxfloat()说明:传回ieee754所支持的但准浮点数格式中最大的浮点数值。参数:无回传值:浮点数3.40282347e+38例外状况:无范例:vara=float.maxfloat(); minfloat 程序:minfloat()说明:传回ieee754所支持的但准浮点数格式中最小的浮点数值。参数:无回传值:浮点数1.17549435e-38例外状况:无范例:vara=float.minfloat(); 6.4string函数库 名称:字符串说明:这个函数库包含了字符串程序的集合,一个字符串可以是字符数组,每个字符都有个索引,字符串的第一个字浮的索引为0,字符串的长度是字符在数组中的数目。 你能使用一些特殊的分隔符号来界定不同的字符串,这样你就能存取这些有分隔符号予元素索引所界定出的元素,字符串中第一个元素的索引值为0,每个字符串分隔符号回分隔出两个元素,但字符是不能用来做分隔符号。一个空格的字符可能是下列字符其中之一: tab:水平跳格定位(horizontaltabulation)vt:垂直跳格定位(ertivaltabulation)ff:跳页(fromfeed)sp:空格(space)lf:跳行(linefeed)cr:归位(carriagereturn) length 程序:length(string)说明:传回给予字符串的长度(字符的数目)。参数:string=字符串回传值:整数或invalid例外状况:无范例:vara="abc";varb=string.length(a);//b=3varc=string.length("");//c=0vard=string.length(342);//d=3 isempty 程序:isempty(string)说明:如果字符串长度为零则传回布尔值true,反之传回false。参数:string=字符串回传值:布尔值或invalid例外状况:无范例:vara="hello;varb="";varc=sting.isempty(a);//c=falsevarc=sting.isempty(b);//d=turevarc=sting.isempty(ture);//e=false charat 程序:charat(sting.index)说明:回传string中index值所指定的字符。参数:string=字符数index=数字(回传回index所指定的字符)回传值:字符串或invalid例外状况:如果index的值超过字符串的范围,则回传空字符串("")范例:vara="mynameisjoe"varb=sting.charat(a,0);//b="m"varc=sting.charat(a,100);//c=""vard=sting.charat(34.0);//d="3"vare=sting.charat(a,"first");//e=invalid substring 程序:substring(string,startindex,length)说明:传回一个新的字符串来代替所给予的字符串,这个新字符串给定的索引值开始,它的长度有所给予的length决定。如果startindex小于0,则会0来当作索引值。如果length大于剩余字符的数目,则lenght会由剩余的字符数来代替。如果startindex予lenght是浮点数,则会先使用float.int()来计算正确的整数值。参数:string=字符数startindex=数字lenght=数字回传值:字符串或invalid例外状况:如果startindex大于最后的索引值,则回传会空字符串("")如果lenght<=0,传会空字符串("")范例:vara="abcd";varb=string.substring(a,1,2);//b="bc"varc=string.substring(a,2,5);//c="cd"vard=string.substring(1234,0,2);//d="12" find 程序:find(string,substring)说明:传会所要寻找的字符串substring和原始字符串string相符的第一个字符的索引值。如果没有相符,则传会整数值-1。两个字符传如果是相等的话,是定义为不符合。参数:string=字符串substring=字符串回传值:整数或invalid例外状况:无范例:vara="abcde";varb=string.find(a,"cd");//b=2varc=string.find(34.2,"de");//c=-1vard=string.find(a,"gz");//d=-1vare=string.find(34,"3");//e=0 replace 程序:eplace(tring,oldsubstring,newsubstring)说明:传会新字符串,这个新字符串是由和所给予字符串string相符的旧字符传oldsubstring使用新字符串newsubstring字符串加以代替。如果两字符串相等的话,定义为相符。参数:string=字符串oldsubstring=字符串newsubstring=字符串回传值:字符串或invalid例外状况:无范例:vara="hellojoe.whatisupjoe?";varnewname="don";varoldname="joe";varc=string.replace(a,oldname,newname);//c="hellodon.whatisupdon?"vard=string.replace(a,oldname,newname);//c="hellodon.whatisupdon?" element 程序:element(string,separator)说明:回传分隔符号separator所分隔的字符串string的元素数目,空字符串("")是有效的元素,这表示了这程序永远不会回传一个小于或等于0得值。参数:string=字符串separator=字符串回传值:整数或invalid例外状况:如果separator是个空字符串,则回传invalid范例:vara="mynameisjoe;age50";varb=string.elements(a,"");//b=6varc=string.elements(a,";");//c=3vard=string.elements("",";");//d=1vare=string.elements("a","");//e=1varf=string.elements(";",";");//f=2varg=string.elements(";;,;",";,");//g=4separator=; elementat 程序:elementat(string,index,separator)说明:寻找字符串string的第index个元素,这些元素是由分隔符号separator所加以分开,并回传相对应的元素。如果index值小于0,则回传第一个元素。如果index值大于元素的数目,则回传最后一个元素。如果字符串为空字符串,则回传空字符串。如果index值为浮点数,则须先使用float.int()来计算出正确的索引值。参数:string=字符串index=数字separator=字符串回传值:字符串或invalid例外状况:如果separator是个空字符串,则回传invalid范例:vara="hellojoe.whatisupjoe?";varb=string.elementat(a,0,"");//b="my"varb=string.elementat(a,14,";");//c=""varb=string.elementat(a,1,";");//d="age50" removeat 程序:removeat(string,index,separator)说明:将符合索引值index的分隔号separator与元素有字符串string中移出,并回传这个新字符串。如果index值小于0,则回传第一个元素。如果index值大于元素的数目,则回传最后一个元素。如果字符串为空字符串,则回传空字符串。如果index值为浮点数,则须先使用float.int()来计算出正确的索引值。参数:string=字符串element=字符串index=数字separator=字符串回传值:字符串或invalid例外状况:如果separator是个空字符串,则回传invalid范例:vara="aa;bcd";vars="";varc=string.removeat(a,1,s);//b="abcd"vard=string.removeat(a,0,";");//c="bcd"vare=string.removeat(a,14,";");//d="aa" replaceat 程序:replaceat(string,index,separator)说明:在特定的index中的元素,使用所给予的元素element来代替,并回传这个新字符串。如果index值小于0,则回传第一个元素。如果index值大于元素的数目,则回传最后一个元素。如果字符串为空字符串,则回传空字符串。如果index值为浮点数,则须先使用float.int()来计算出正确的索引值。参数:string=字符串element=字符串index=数字separator=字符串回传值:字符串或invalid例外状况:如果separator是个空字符串,则回传invalid范例:vara="bc;e";vars="";vard=string.replaceat(a,"a",0,s);//b="ac;e"vare=string.replaceat(a,"f",5,";");//d="bc;f" insertat 程序:insertat(string,index,separator)说明:将元素element与相对应的分隔符号separator插入与原始字符串string,在特定的element中的元素如果index值小于0,则0会用来当索引值。如果index值大于元素的数目,则元素element会附加上字符串string的为端。如果字符串string为空字符串,则回传包含所给予元素element的新字符串。如果index值为浮点数,则需先使用float.int()来计算出正确的索引值。参数:string=字符串element=字符串index=数字separator=字符串回传值:字符串或invalid例外状况:如果separator是个空字符串,则回传invalid范例:vara="bc;e";vars="";varb=string.insertat(a,"a",0,s);//b="abc;e"varc=string.insertat(a,"x",3,s);//c="bc;ex"vard=string.insertat(a,"d",1,";");//d="bc;d;e"vare=string.insertat(a,"f",5,";");//e="bc;e;f" squeeze 程序:squeeze(string)说明:将字符串string中所有连续的空格减少为一个空格。参数:stromg=字符串回传值:字符串或invalid例外状况:无范例:vara="hello";varb="byejon.seeyou!";varc=string.squeeze(a);//c="hello"vard=string.squeeze(b);//d="byejon.seeyou!" trim 程序:trim(string)说明:将字符串string中所有开头与连续的空格删除。参数:string=字符串回传值:字符串或invalid例外状况:无范例:vara="hello";varb="byejon.seeyou!";varc=string.squeeze(a);//c="hello"vard=string.squeeze(b);//d="byejon.seeyou!" compare 程序:compare(string,string2)说明:这个程序的回传值会指出string1与string2在语汇上关系,这个关系是基于自然字集的字符码之间,其回传值如下:如果string1小于string2,传会-1。如果string1等于string2,传会-1。如果string1大于string2,传会-1。参数:string1=字符串string2=字符串回传值:整数或invalid例外状况:无范例:vara="hello";varb="hello";varc=string.compare(a,b);//c=0vard=string.compare("bye","jon");//d=-1vare=string.compare("jon","bye");//e=1 tostring 程序:tostring()说明:回传一个能表示所给予的值的字符串,这个程序跟wml的转换是一样的,除了invlaid值会回传一个"invalid"字符串。参数:=任意值回传值:字符串例外状况:无范例:vara=string.tostring(12);//a="12"vara=string.tostring(true);//b="true" format 程序:format(format,)说明:将给予的值转换成字符串,并依照所给予的格式format提供的格式化的字符串,这个格式字符串只能由一种特定格式,并能放置于字符串的任何地方,如果超过一种以上的格式需要使用,则能会使用最左边的格式,至于其他格式则有空字符串代替,这些格式如下: [width][.precision]typewidth参数为非负的是近制整数,这个参数控制与显现字符的最小数目,如果输出的字数小于指定的宽度width,则会在字符串的左边加上空白,直到符合最小宽度的要求,width参数永远不会是值被删减,如果输出的字数大于特定的宽度或并没指定宽度的话,中所有的字符都会被显现。 precision参数是个非负的十进制整数,这个引号之前必须限价上(.)的符号,其目的是用来设定输入值的精确度,这个值的解议会跟给予的格式有关: d界定数字最小的显现数目,如果中数字的数目超过precision的值,输入值会在其左边加上0,如果数字的数目超过precision值,的值并不会被删减,预设的precision值为1,如果precision值设定为0,而且页被转换成0,则结果将是一个空字符串。 f界定十进制小数后的数字数目,如果十进制的小数点出现了,在小数点之后至少要有一位数,这个值会被四舍五入到近似的数字数值,预设的precision为6,如果precision为0或小数点(.)后没有数字,则不会显现小数点,当值的小数点后数字数目小于precision的值,字母0为被加入直到填满栏位(如:string.format("%2.3f",1.2)会是"1.200") s界定字符所要显现的最大数目,预设值是显现所有的字符,当width值大于precision值,width值是可以忽略的,跟width值不同的是,precision只可能会造成浮点数值的四舍五入或输入值的删减。 type参数是唯一格式的参数,他出现在任何的格式栏为选项之后,type字符决定了所给予的将会解译成整数,浮点数或字符串,支持的type参数如下:d整数:输入值的格式[-]dddd,这里的dddd是一个或以上的十进制数字。f浮点数:输入值的格式[-]dddd.dddd,这里的dddd是一个或以上的十进制数字,在小数点之前的数字数目和数字的大小有关,小数点之后的数字数目和精确度有关。s字符串:字符的显现跟精确度有关。百分比字符(%)在格式字符串中能使用额外的百分比字符加以表示(%%)。参数:format=字符串=任意值回传值:字符串或invalid例外状况;无效的格式会回传invalid值。范例:vara=45;varb=-45;varc="now";vard=1.2345678;vare=string.format("e:%6d",a);//e="e:45"vare=string.format("%6d",b);//f="-45"vare=string.format("e:%6d",a);//g="0045"vare=string.format("%6.4d",b);//h="-0045"vare=string.format("doit%s",c);//i="doitnow"vare=string.format("%3f",d);//j="1.2345678"vare=string.format("%10.2f%%",a);//k="1.23%."vare=string.format("%3f%2f",a);//l="1.234567."vare=string.format("%.0d",0);//m=""vare=string.format("%.7d","int");//n="invalid"vare=string.format("%s",ture);//o="ture"
|