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

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


...全文
80 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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

这样是不是 少一步操作
回复

'从一个字符串中获取指定个数的汉字
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
楼上的老大也帮忙解释一下,好不?谢谢!
回复
'我来个不一样的.
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
谢两位大佬
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2008-04-11 09:51
社区公告
暂无公告