一、基礎知識:
1、常用ASCII碼知識:
chr(9)、chr(10)、chr(13)、chr(32)、chr(34)
所有關於 ASCII碼的表格:[url]http://www.asciitable.com/
chr(13) 是一個斷行符號
Chr(10) 是個分行符號
chr(32) 是一個空格符
9/34 是tab,未確定?
2、lotus notes中的rtf域
GetFormattedText(tabstrip, lineLength% )
eg:GetFormattedText(false,0),對rtf域值中的tab不進行處理,並且預設80個字元換行。
我們常用如下代碼的方式來讀取rtf域的值
Dim doc As NotesDocument
Dim rtitem As Variant
Dim plainText As String
Dim fileNum As Integer
'...set value of doc...
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
plainText = rtitem.GetFormattedText( False, 0 )
End If
二、遇到的問題
今天在讀取rtf域的值,並通過js代碼讀取到excel中的時候報錯:“未結束的字串常量”。
相關代理中的代碼如下:
Print |<script language="Javascript">|
Print |alert("|+doc.rtfDecription+|");|
Print |</script>|
其中rtfDecription 為rtf域。
當此域中的值為簡單的文本(eg,123,dsa)時,不存在這種問題。當域值包含換行等字元的時候,就會報錯“未結束的字串常量”。
三、處理辦法
以下範例程式碼針對相關字元(斷行符號和換行)進行處理。
Sub Initialize
On Error Goto errHandler
Dim s As NotesSession
Dim doc As NotesDocument
Set s = New NotesSession
Set doc = s.DocumentContext
Dim rtitem As Variant
Dim plainText As String
Dim vTextArea As Variant
Set rtitem=doc.GetFirstItem("wahaha")
If ( rtitem.Type = RICHTEXT ) Then
plainText = rtitem.GetFormattedText( False, 0 )
End If
Dim strTemp As String
If (Instr(plainText,Chr(13))>0) Then
vTextArea = Split(plainText,Chr(13))
strTemp =""
strTemp = Join(vTextArea," ")
End If
If (Instr(strTemp,Chr(10))>0) Then
vTextArea = Split(strTemp,Chr(10))
strTemp =""
strTemp = Join(vTextArea," ")
End If
'Method 2
'vTextArea = Evaluate(|@ReplaceSubstring(@Text(wahaha);@NewLine;" ")|,doc)
'Msgbox vTextArea(0)
Print |<script language="Javascript">|
Print |alert("|+strTemp+|");|
Print |</script>|
Exit Sub
errHandler:
Msgbox Error & Error$ & Cstr(Erl)
Exit Sub
End Sub
輸入值:abc
def
afs
輸出值:abc def afs
四、總結
前台代碼(js代碼)和後台代碼(LotusScript、java)盡量分開寫。