一、基础知识:
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)尽量分开写。