asp搜索关键字前后显示问题

如对以下内空"事后监督工作成绩突出的,要给予通报表扬或物质奖励;事后监督工作不力、严重失职,发现问题故意隐瞒不报,袒护责任人,造成资金损失的,要按规定给予行政处分;触犯刑... 如对以下内空"事后监督工作成绩突出的,要给予通报表扬或物质奖励;事后监督工作不力、严重失职,发现问题故意隐瞒不报,袒护责任人,造成资金损失的,要按规定给予行政处分;触犯刑律的,要追究其刑事责任。"搜索关键字"资金损失",求关键字前后一定范围高亮显示,如上述内容显示关键字前50字后30字. 展开
 我来答
cxzy0322
推荐于2016-01-20 · TA获得超过140个赞
知道小有建树答主
回答量:47
采纳率:0%
帮助的人:61.6万
展开全部

一、问题需求分析:

(1)从一大段文本中提取一段文本,该段文本必须满足下列要求:

        A. 包含关键词“资金损失”;

        B. 若关键词前的字符数超过 50 个,则截取靠近关键词的前 50 个字符;

        C. 若关键词前的字符数不超过 50 个,则提取关键词前的所有字符;

        D. 若关键词后的字符数超过 30 个,则截取靠近关键词的后 30 个字符;

        E. 若关键词后的字符数不超过 30 个,则提取关键词后的所有字符。

(2)将提取到的文本高亮显示。

二、解决问题的思路:

        从一个字符串中提取另一个字符串,可以使用函数 Mid , 该函数的语法是:Mid(string, start, [,length]),参数 string 为要从中搜索的字符串,参数 start 为要提取的字符串在 string 中的位置(从左往右数),可选参数 length 为要提取多少个字符串。

        将 Mid 函数应用到本问题中来分析:

        string 为已知字符串(即那一大段文本); 

        start 的值可通过下面的方法计算得出:

        A. 先用 Instr 函数返回关键词在整段内容中的位置 x ,若 x 大于 0 即为找到了关键词,x - 1 即关键词左边的字符数;

        B. 若 x 大于 50 ,则 start 的值就是   x - 50;

        C. 若 x 等于或小于 50 ,则 start 的值就是 1 (即从头开始提取)。

        length 的值可通过下面的方法计算得出:

        A. 先计算出关键词左边提取的字符串长度 y :若前述 x 大于 50 ,则 y = 50 ;若 x 等于或小于 50 则 y = x - 1;

        B. length = y + 关键词的长度 + 30 ,不用担心 length 超出字符串范围,因为函数 Mid 在 length 超出字符串范围时,会一直提取到字符串末尾。

三、示例代码:

<%
Dim Str_1, Str_2, KeyWord, Len_1, Len_2, Len_3, Pos_1, Pos_2
Str_1 = "……发现问题故意隐瞒不报,袒护责任人,造成资金损失的,要按规定给予行政处分……" '原始字符串
KeyWord = "资金损失" '关键词
Len_1 = 50 '要提取的关键词前字符数
Len_2 = 30 '要提取的关键词后字符数
Pos_1 = Instr(Str_1, KeyWord) '关键词的位置
If Pos_1 > 50 Then '若关键词前字符数大于 50 个
    Pos_2 = Pos_1 - 50 '提取的起始位置
    Len_3 = 50 + Len(KeyWord) + 30 '提取的长度
ElseIf Pos_1>0 And Pos_1<=50 Then '若关键词前字符数在 1~50
    Pos_2 = 1
    Len_3 = (Pos_1 - 1) + Len(KeyWord) + 30
End If
Str_2 = Mid(Str_1, Pos_2, Len_3)
Str_2 = "<span style=""background-color:#EE3300"">" & Str_2 & "</span>" '高亮显示代码
%>

注:以上代码只考虑关键词在整段内容中第一次出现

追问
可以用,非常感谢!如果显示关键字所在段落代码如何写?
追答
“显示关键词所在段落”这个问题要看“原始文本”是如何划分段落和如何保存的。基本思路是:以段落标记为分界点,用 split 函数将“原始文本”转换为数组(每个段落成为 1 个数组元素),然后用循环检测段落中是否有关键词,有则将整段取出就可以了。代码比上面的还要简单。因时间关系,不能给你一一测试了。你可以自己先按这个思路试试,若真不能解决,再请给出你“原始文本”的段落划分方法和保存方法,有空再帮你看。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式