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

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

%REM
	Class MonthConverter
	Description: Comments for Class
%END REM
Public Class MonthConverter
	Private num2Name As NArray
	Private num2FName As NArray
	Private name2Num As Dictionary
	Private fname2Num As Dictionary
	
	%REM
		Sub New
		Description: Comments for Sub
	%END REM
	Sub New()
		'initialize num2Fname
		Set me.num2FName=New NArray(11)
		With me.num2FName
			Call .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 num2Name
		Set me.num2Name=New NArray(11)
		Dim i As Integer 
		For i=0 To 11
			Call me.num2Name.Add(Left(me.num2FName.Container(i), 3))
		Next
		'initialize fname2Num
		Set me.fname2Num=New Dictionary()
		For i=0 To 11
			Call me.fname2Num.Add(CStr(me.num2FName.Container(i)), i)
		Next
		'initialize name2Num
		Set me.name2Num=New Dictionary()
		For i=0 To 11
			Call me.name2Num.Add(CStr(me.num2Name.Container(i)), i)
		Next
	End Sub
	
	%REM
		Function GetName
		Description: Comments for Function
	%END REM
	Public Function GetName(num As Integer) As String
		If num<1 Or num>12 Then
			Exit Function 
		End If
		me.GetName=me.num2Name.Container(num-1)
	End Function
	
	%REM
		Function GetFullName
		Description: Comments for Function
	%END REM
	Public Function GetFullName(num As Integer) As String
		If num<1 Or num>12 Then
			Exit Function 
		End If
		me.GetFullName=me.num2FName.Container(num-1)
	End Function
	
	%REM
		Function GetNum
		Description: Comments for Function
	%END REM
	Public Function GetNum(monthName As String) As Integer
		Dim num
		num=me.name2Num.Item(monthName)
		If IsEmpty(num) Then
			num=me.fname2Num.Item(monthName)
		End If
		If Not IsEmpty(num) Then
			me.GetNum=num
		End If
	End Function
End Class

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

你可能感兴趣的:(面向对象,LotusScript)