怎样过滤字符串截取汉字!

dragon83 2008-04-11 09:51:48
如:
1.
abcdefg一二三四五六
输出结果:一二三四五(截取前五个汉字)
2.
一二三(abc)四五六(defg)
输出结果:一二三四五(截取前五个汉字)


...全文
116 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
No_Data_Found 2008-04-11
  • 打赏
  • 举报
回复
For Each m In ms'便历匹配的项
if len(Result)>=MaxLength then'如果大于获取的的汉字个数时
exit for'退出for循环
end if
Result=Result&m.submatches(0)'连接汉字
Next

这样是不是 少一步操作
Go 旅城通票 2008-04-11
  • 打赏
  • 举报
回复

'从一个字符串中获取指定个数的汉字
Function GetCHWord(str,MaxLength)
Dim re,Result:Result=""
set re=New RegExp'正则对象
re.IgnoreCase=True'忽略大小写
re.Global=True'全局匹配
re.Pattern="([\u4e00-\u9fa5]+)"'里面这个字符串是匹配汉字用的
Set ms=re.Execute(str)'执行匹配
For Each m In ms'便历匹配的项
Result=Result&m.submatches(0)'连接汉字
if len(Result)>=MaxLength then'如果大于获取的的汉字个数时
Result=left(Result,MaxLength)'有可能大于,所以要截取一下
exit for'退出for循环
end if
Next
Set re=Nothing
GetCHWord=Result'设置函数返回值
End Function

Response.write GetCHWord("abcdefg一二三四五六",5)&"<br/>"
Response.write GetCHWord("一二三(abc)四五六(defg)",5)
dragon83 2008-04-11
  • 打赏
  • 举报
回复
楼上的老大也帮忙解释一下,好不?谢谢!
Go 旅城通票 2008-04-11
  • 打赏
  • 举报
回复
'我来个不一样的.
Function GetCHWord(str,MaxLength)
Dim re,Result:Result=""
set re=New RegExp
re.IgnoreCase=True
re.Global=True
re.Pattern="([\u4e00-\u9fa5]+)"
Set ms=re.Execute(str)
For Each m In ms
Result=Result&m.submatches(0)
if len(Result)>=MaxLength then
Result=left(Result,MaxLength)
exit for
end if
Next
Set re=Nothing
GetCHWord=Result
End Function

Response.write GetCHWord("abcdefg一二三四五六",5)&"<br/>"
Response.write GetCHWord("一二三(abc)四五六(defg)",5)
No_Data_Found 2008-04-11
  • 打赏
  • 举报
回复
chrA = Mid(str, i, 1)
If Asc(chrA) < 0 or Asc(chrA) > 255 Then
k = k + 1
s = s & chrA
End If

遍历字符串 逐个判断字符是不是汉字 如果是汉字 计算器加 并拼到返回字符串

关于汉字判断 参考

http://zhidao.baidu.com/question/14529626.html
叶随风 2008-04-11
  • 打赏
  • 举报
回复
一个字符一个字符的截取,然后判断其ASC码,如果在0到255间,就是普通的英文字母和符号,其他基本上都是汉字字符。
明白?
dragon83 2008-04-11
  • 打赏
  • 举报
回复
老大,简单讲解一下,好不?
半懂中!
  • 打赏
  • 举报
回复
呵呵,够快的
No_Data_Found 2008-04-11
  • 打赏
  • 举报
回复

Function GetChineseStrByLength(str,length)
If IsNull(str) Or str = "" Then
s = ""
Else
Dim i, n, k, chrA,s
k = 0
n = Len(str)
For i = 1 To n
chrA = Mid(str, i, 1)
If Asc(chrA) < 0 or Asc(chrA) > 255 Then
k = k + 1
s = s & chrA
End If

If k = length Then
Exit For
End If
Next
End If

GetChineseStrByLength = s
End Function

response.Write GetChineseStrByLength("一二三(abc)四五六(defg)",5)
dragon83 2008-04-11
  • 打赏
  • 举报
回复
谢两位大佬

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧