21. 面向对象的LotusScript(四)之MonthConverter

来源:互联网 发布:农村广电网络宽带 编辑:程序博客网 时间:2024/04/28 00:36

在Notes开发中,有时会需要在月份的数字和名称之间相互转换。因为仅仅涉及到月份,用Format和DateValue函数并不方便。我们可以编写一个实用的类来解决这个问题。

%REMClass MonthConverterDescription: Comments for Class%END REMPublic Class MonthConverterPrivate num2Name As NArrayPrivate num2FName As NArrayPrivate name2Num As DictionaryPrivate fname2Num As Dictionary%REMSub NewDescription: Comments for Sub%END REMSub New()'initialize num2FnameSet me.num2FName=New NArray(11)With me.num2FNameCall .Add("January")Call .Add("February")Call .Add("March")Call .Add("April")Call .Add("May")Call .Add("June")Call .Add("July")Call .Add("August")Call .Add("September")Call .Add("October")Call .Add("November")Call .Add("December")End With'initialize num2NameSet me.num2Name=New NArray(11)Dim i As Integer For i=0 To 11Call me.num2Name.Add(Left(me.num2FName.Container(i), 3))Next'initialize fname2NumSet me.fname2Num=New Dictionary()For i=0 To 11Call me.fname2Num.Add(CStr(me.num2FName.Container(i)), i)Next'initialize name2NumSet me.name2Num=New Dictionary()For i=0 To 11Call me.name2Num.Add(CStr(me.num2Name.Container(i)), i)NextEnd Sub%REMFunction GetNameDescription: Comments for Function%END REMPublic Function GetName(num As Integer) As StringIf num<1 Or num>12 ThenExit Function End Ifme.GetName=me.num2Name.Container(num-1)End Function%REMFunction GetFullNameDescription: Comments for Function%END REMPublic Function GetFullName(num As Integer) As StringIf num<1 Or num>12 ThenExit Function End Ifme.GetFullName=me.num2FName.Container(num-1)End Function%REMFunction GetNumDescription: Comments for Function%END REMPublic Function GetNum(monthName As String) As IntegerDim numnum=me.name2Num.Item(monthName)If IsEmpty(num) Thennum=me.fname2Num.Item(monthName)End IfIf Not IsEmpty(num) Thenme.GetNum=numEnd IfEnd FunctionEnd Class

GetName方法将月份数字转换成三字母缩写的月份名称。GetFullName方法将月份数字转换成英文月份名称。GetNum方法将月份名城转换成月份数字。其中用到的Dictionary和NArray在之前的面向对象的LotusScript的系列文章中都已经给出了。

原创粉丝点击