怎样判断一个字符串中不能包括除汉字以外的字符?

aiq 2010-08-23 05:47:01
字符串中除了汉字,不能有其他字符,比如字母,标点符号等,怎样写个函数,有就返回1,没有就返回0
...全文
198 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ai0fan 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 aiq 的回复:]
谢谢各位,但测试还有问题,比如汉字 “玥”

上面各位给出的都认为这个不是汉字
[/Quote]

function HasHz(s: widestring): Integer;
方法内容不变
Harryfin 2010-08-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 biekvn 的回复:]

如果只获得包含不包含的结果,那就这样看行不行。

Delphi(Pascal) code

function check(const src: string): Boolean;
begin
Result := Length(WideString(Trim(src))) = Length(AnsiString(Trim(src))) div 2;
end;
[/Quote]
不行的,全角字符是2字节
麦客来了 2010-08-25
  • 打赏
  • 举报
回复
如果只获得包含不包含的结果,那就这样看行不行。


function check(const src: string): Boolean;
begin
Result := Length(WideString(Trim(src))) = Length(AnsiString(Trim(src))) div 2;
end;
aiq 2010-08-25
  • 打赏
  • 举报
回复
谢谢各位,但测试还有问题,比如汉字 “玥”

上面各位给出的都认为这个不是汉字
亮剑_ 2010-08-24
  • 打赏
  • 举报
回复
1、确认汉字编码
2、每种编码都有一个码的范围,且一般都是连续的
据此判定
winstonbonaparte 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 enter89 的回复:]

没c#版 的???
[/Quote]
自己把这代码翻译成C#的啊
ai0fan 2010-08-24
  • 打赏
  • 举报
回复

function HasHz(s: string): Integer;
const
CN_NUMBER = '12345678901234567890';
CN_LETTER =
' ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
' abcdefghijklmnopqrstuvwxyz' +
' abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
//基本上常用的就是这些符号、不够的时候再加
CN_SIGN = '^.,/\[]!@#%&*()_+<>?:"{}|`-=~$;'''
+ '.,/\[]!@#%&*()_+<>?:"{}|`-=~$;'。';
var
i: Integer;
begin
Result := 0;
for i := 1 to Length(s) do
begin
if Ord(s[i]) < 128 then //过滤单字节
begin
Result := 1;
Break;
end
else if Pos(s[i], CN_NUMBER) > 0 then //数字
begin
Result := 1;
Break;
end
else if Pos(s[i], CN_LETTER) > 0 then //字母
begin
Result := 1;
Break;
end
else if Pos(s[i], CN_SIGN) > 0 then //符号
begin
Result := 1;
Break;
end
end;
end;

Waldenz 2010-08-24
  • 打赏
  • 举报
回复
没c#版 的???
bdmh 2010-08-24
  • 打赏
  • 举报
回复
function HasHz(s: string): Integer;
var
i:Integer;
begin
Result := 0;
for i := 1 to Length(s) do
begin
if Ord(s[i])<128 then
begin
Result := 1;
Break;
end;
end;
end;
lyhoo163 2010-08-23
  • 打赏
  • 举报
回复
汉字是双字节(Byte)组成,第一字节的属性是mbLeadByte。由此可以测定字符串中有多少汉字。

function ChineseS(S:string):integer;
var s:string;
i,k:integer;
begin
result:=0;
k:=0;
for i:=1 to length(S) do
if (ByteType(S,i)=mbLeadByte) then K:=K+1;
result:=K;
end;
namoemitoufo 2010-08-23
  • 打赏
  • 举报
回复
用正则表达式撒。。。。

var str=document.getElementById("name").value;
var reg = /^[\u4e00-\u9fa5]+$/i;
if (!reg.test(str))
{
alert("请输入中文名字!");

return 1;
}
return 0;

lhy 2010-08-23
  • 打赏
  • 举报
回复
按照汉字的范围一个字符一个字符的核对
notepad--v3.4 windows Notepad--v3.4.0-plugin-Installer.exe 是win10下面的插件版安装包,会关联右键菜单等。 Notepad--v3.4.0-win10-portable.zip 是绿色免安装版本,解压即用,不会关联右键菜单注册表。 Ndd-quick-v3.3.0-win10-single-portable.zip 是单文件绿色免安装版,只包含皮肤和vc依赖库,不含插件、不含文件对比,主推轻量级、快速反应。适合只需要纯粹、轻快级,文本编辑器的用户。不定期发布。 MacOS 版本 Notepad--v3.4.0-mac_x64_12.3.dmg 是macos 12.x 及以后的版本。 Notepad--v3.4.0-mac_arm64_12.3.dmg 是macos 12.x 及以后 arm64 m1/m2芯片 的版本。第一次安装时,需要在设置偏好里面,放开苹果的安装限制,才能正常识别,请自行放开设置一下。 如果还是有问题,参考帖子:#I8JTJN:macOS Sonoma 14.1.1安装提示已损坏:macOS Sonoma 14.1.1安装提示已损坏 uos com.hmja.notepad_3.4.0.0_amd64.deb 是x64 cpu架构的uos系统对应的ndd版本。 其余系统版本后续会发布。 3.4 修改如下: 1 支持文件标签拖入拖出到新窗口的效果。 2 windows下修改快捷键放开。 3 按行号切分大文件。 4 大文件打开时,在文件夹查找所在目录,macos下可能会崩溃问题。 5 目录右键增加删除文件、文件夹功能。 6 补充深色主题下rust语法高亮; lisp 语法失效问题。 7 linux下信号打开文件,不拿锁,打开文件在消息队列去做。

16,746

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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