找回密码
 点一下
查看: 1167|回复: 11

如何判断截取出来的字符是否中文?

[复制链接]
发表于 2009-7-27 02:37:05 | 显示全部楼层 |阅读模式
例如
local integer r = GetRandomInt(1,13)
local string s = SubString("只是个test",r-1,r)

有什么办法能够判断s是中文.还是英文?
发表于 2009-7-27 08:32:12 | 显示全部楼层
既然5个英文单词只有5个单位长度,5个中文字符却有10个单位长度吧。

那么获得的字符串s的长度然后减去1的字符串,然后再从“只是个test”中提取一次字符串s,当然长度也得减1
两两字符串比较,相等就是英文吧,否则为中文。


这样能行吗?

以前GA上有本JassAll的东西里面好像有个ASC码方法来判断的函数
回复

使用道具 举报

发表于 2009-7-27 08:51:20 | 显示全部楼层
你这个似乎只是判断1位,就这样行了?

local integer r = GetRandomInt(1,13)
local string s = SubString("只是个test",r-1,r)
local integer sl=StringLength(s)
if s !=1 then
中文
else
英文
endif
回复

使用道具 举报

 楼主| 发表于 2009-7-27 13:37:39 | 显示全部楼层
引用第1楼矮子于2009-07-27 08:32发表的  :
既然5个英文单词只有5个单位长度,5个中文字符却有10个单位长度吧。

那么获得的字符串s的长度然后减去1的字符串,然后再从“只是个test”中提取一次字符串s,当然长度也得减1
两两字符串比较,相等就是英文吧,否则为中文。

.......

WAR3中的中文是占3个字符的
貌似if s!= 1 then
也不能通过编译吧...
整数和字符串比较?
回复

使用道具 举报

发表于 2009-7-27 18:31:53 | 显示全部楼层
if s !=1 then

额,很明显这个写错了

应该是

if sl != 3 then
英文
回复

使用道具 举报

发表于 2009-7-28 00:18:14 | 显示全部楼层
下面说的都是二进制

魔兽的字符串的一个字符是下面的格式的一种

0xxxxxxx
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx 10xxxxxx
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

如果一个字节,0开头说明这个字符就1字节,第一个0在第二位说明这个字节是某个字符的中间部分,第一个0在第二位之后,那就是这个字符首字节,并且能判断出这个字符有几个字节。

中文都是3个字节的,没什么特殊要求判断到这里就可以了(3个字节还可能是日文、韩文等)
回复

使用道具 举报

发表于 2009-7-28 00:20:20 | 显示全部楼层
ls的是UTF-8编码?
话说最近实习不务正业,在写一个UTF-8的文本编辑的东西玩……
回复

使用道具 举报

 楼主| 发表于 2009-7-28 01:58:05 | 显示全部楼层
引用第5楼actboy168于2009-07-28 00:18发表的  :
下面说的都是二进制

魔兽的字符串的一个字符是下面的格式的一种

0xxxxxxx
.......

问题是在WAR3中如何取出字符的2进制码?貌似连ASCII码都取不到的说.
所以根本无法比较,是否给给出具体代码?
回复

使用道具 举报

发表于 2009-7-28 02:49:49 | 显示全部楼层
恩,是utf-8

有人写过字符串转ascii码的函数,你可以搜下
回复

使用道具 举报

发表于 2009-7-28 02:53:29 | 显示全部楼层
这里面应该有那个函数

http://bbs.islga.org/read-htm-tid-19615.html

不过我没看过- -
回复

使用道具 举报

发表于 2009-7-28 08:17:04 | 显示全部楼层
string彻底研究V1.17。现在终于可以方便的按字符处理字符串了
以上zyl910 大人的研究
关于字符串就这么点东西
其他内容到下面链接22楼自己看吧
http://bbs.islga.org/read-htm-tid-23126-fpage-0-page-2.html
回复

使用道具 举报

发表于 2009-7-28 08:40:01 | 显示全部楼层
仿佛对中文字符串的截取是有问题的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-7-22 02:17 , Processed in 0.089907 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表