ON CF5
<cfscript>
start = 1;
aLog = ArrayNew(1);
commentRegexp = "[*]{3}[[:space:]]+([^*]*)[[:space:]]+[*]{3}";
timestampRegexp =
"[0-9]{1,2}/[0-9]{2}/[0-9]{4}[[:space:]]+[0-9]{2}:[0-9]{2}:[0-9]{2}";
while(true){
stTmp = REFind(commentRegexp,str,start,true);
if(stTmp.pos[1]){
stLog = StructNew();
header = Mid(str,stTmp.pos[2],stTmp.len[2]);
stTmp2 = REFind(timestampRegexp,header,1,true);
if(stTmp2.pos[1]){
stLog.user =
Trim(Removechars(header,stTmp2.pos[1],stTmp2.len[1]));
stLog.timestamp =
Mid(header,stTmp2.pos[1],stTmp2.len[1]);
}
else{
stLog.user = Trim(header);
stLog.timestamp = "";
}
stLog.text = "";
if(ArrayLen(aLog)){
aLog[ArrayLen(aLog)].text =
Mid(str,start,stTmp.pos[1]-start);
}
ArrayAppend(aLog,stLog);
start = stTmp.pos[1]+stTmp.len[1];
}
else{
if(ArrayLen(aLog)){
aLog[ArrayLen(aLog)].text =
Trim(Mid(str,start,Len(str)-start));
}
break;
}
}
</cfscript>
<cfoutput>
<cfloop from="1" to="#ArrayLen(aLog)#" index="i">
<div class="timestamp">#aLog[i].user# #aLog[i].timestamp#</div>
<pre>#aLog[i].text#</pre>
</cfloop>
</cfoutput>

ON CFMX
<cfscript>
start = 1;
aLog = ArrayNew(1);
commentRegexp =
"[*]{3}\s+(.*?)\s+[*]{3}(.*?)(?=([*]{3}\s+.*?\s+[*]{3})|$)";
timestampRegexp = "\d{1,2}/\d{2}/\d{4}\s+\d{2}:\d{2}:\d{2}";
while(true){
stTmp = REFind(commentRegexp,str,start,true);
if(stTmp.pos[1]){
stLog = StructNew();
header = Mid(str,stTmp.pos[2],stTmp.len[2]);
stTmp2 = REFind(timestampRegexp,header,1,true);
if(stTmp2.pos[1]){
stLog.user =
Trim(Removechars(header,stTmp2.pos[1],stTmp2.len[1]));
stLog.timestamp =
Mid(header,stTmp2.pos[1],stTmp2.len[1]);
}
else{
stLog.user = Trim(header);
stLog.timestamp = "";
}
stLog.text = Mid(str,stTmp.pos[3],stTmp.len[3]);
ArrayAppend(aLog,stLog);
start = stTmp.pos[1]+stTmp.len[1];
}
else{
break;
}
}
</cfscript>

The script on CF5 breaks if you have * between *** ***
The script on CFMX doesn't

> -----Original Message-----
> From: cf coder [mailto:[EMAIL PROTECTED]
> Sent: maandag 17 mei 2004 17:39
> To: CF-Talk
> Subject: Re: help with string manipulation (Find,Replace)
>
> Thanks Pascal. Sorry again for any inconvenience caused.
>
[Todays Threads] [This Message] [Subscription] [Fast Unsubscribe] [User Settings]

Reply via email to