【已解决】如何获取中文首字母(AHK Unicode) Topic is solved

遇到了问题?请先进行搜索(中文和英文),然后在此提问
tmplinshi
Posts: 1045
Joined: 01 Oct 2013, 14:57

【已解决】如何获取中文首字母(AHK Unicode)

23 Jan 2014, 11:35

请问如何在 AHK U32 版本中,获取中文对应的首字母?

以下的函数只能在 ANSI 中运行:

Code: [Select all] [Expand] [Download] (Script.ahk)GeSHi © Codebox Plus


我看了好些帖子文章,但还是不太理解。相关文章:
Last edited by tmplinshi on 19 Aug 2014, 05:20, edited 3 times in total.
User avatar
amnesiac
Posts: 186
Joined: 22 Nov 2013, 03:08
Location: Egret Island, China
Contact:

Re: 如何获取中文首字母(AHK Unicode)

24 Jan 2014, 06:34

中文在Unicode中编码是按部首分布,不过在GBK中按拼音分布,所以考虑利用这点。
先把中文转换为GBK编码,接着获取编码判断(如上面的例子)。好久没动手了,未测试。

如果不嫌烦,也可以自己建立映射表。
AutoHotkey 学习指南(Beauty of AutoHotkey)
I do not make codes, and only a porter of AutoHotkey: from official to Chinese, from other languages to AutoHotkey, and show AutoHotkey to ordinary users sometimes.
tmplinshi
Posts: 1045
Joined: 01 Oct 2013, 14:57

Re: 如何获取中文首字母(AHK Unicode)

24 Jan 2014, 10:20

谢谢!那在 AHK Unicode 中,如何把字符转换成 GBK 编码呢?

下面的“转换为 GBK 编码”是从你的一个帖子中看到的,但是与 AHK ANSI 的运行结果不一样。

Code: [Select all] [Expand] [Download] (Script.ahk)GeSHi © Codebox Plus

User avatar
amnesiac
Posts: 186
Joined: 22 Nov 2013, 03:08
Location: Egret Island, China
Contact:

Re: 如何获取中文首字母(AHK Unicode)  Topic is solved

24 Jan 2014, 21:35

因为这个问题有代表性,所以我打破了不动脚本的想法。对于你 getfirstchar(str) 函数,我改变两处:

Code: [Select all] [Download] (Untitled.txt)GeSHi © Codebox Plus

StrPut(str, &var, "CP936")    ; 转换为 GBK 编码,你的系统不确定,所以这里改用CP936

Code: [Select all] [Download] (Untitled.txt)GeSHi © Codebox Plus

nGBKCode := (NumGet(var, 0, "UChar") << 8) + NumGet(var, 1, "UChar") - 65536    ; 先获取的是低位,这个与版本是无关的

顺便说一句,后面这个问题以前曾在内存中存储即低字节(LChar)与高字节(WChar)(还有低字与高字等)问题中谈过。
AutoHotkey 学习指南(Beauty of AutoHotkey)
I do not make codes, and only a porter of AutoHotkey: from official to Chinese, from other languages to AutoHotkey, and show AutoHotkey to ordinary users sometimes.
tmplinshi
Posts: 1045
Joined: 01 Oct 2013, 14:57

Re: 如何获取中文首字母(AHK Unicode)

25 Jan 2014, 10:36

太感谢了!

Code: [Select all] [Expand] [Download] (Script.ahk)GeSHi © Codebox Plus

Last edited by tmplinshi on 20 Dec 2016, 09:33, edited 1 time in total.
tmplinshi
Posts: 1045
Joined: 01 Oct 2013, 14:57

Re: [已解决] 如何获取中文首字母(AHK Unicode)

26 Jan 2014, 08:02

以下代码是从 php 代码转换过来的,比上面的 getfirstchar 支持更多汉字。

Code: [Select all] [Expand] [Download] (Script.ahk)GeSHi © Codebox Plus

Last edited by tmplinshi on 20 Dec 2016, 09:34, edited 1 time in total.
aamii
Posts: 37
Joined: 23 May 2014, 03:50

Re: 如何获取中文首字母(AHK Unicode)

23 May 2014, 04:00

首先感谢tmplinshi提供的函数,很便利。
实际应用中,我们需要用到多音字,比如 ”行走” XZ,”银行” YH。

主要是反过来查询的时候,让YH能匹配银行,YX也能匹配,像totalcmd上支持的那样。
代码好处理吗?谢谢。
User avatar
amnesiac
Posts: 186
Joined: 22 Nov 2013, 03:08
Location: Egret Island, China
Contact:

Re: 如何获取中文首字母(AHK Unicode)

23 May 2014, 19:04

aamii wrote:首先感谢tmplinshi提供的函数,很便利。
实际应用中,我们需要用到多音字,比如 ”行走” XZ,”银行” YH。

主要是反过来查询的时候,让YH能匹配银行,YX也能匹配,像totalcmd上支持的那样。
代码好处理吗?谢谢。

可以转置建立一个拼音首字母或其组成的串与字、词对应的中间量,我想对象可行。
AutoHotkey 学习指南(Beauty of AutoHotkey)
I do not make codes, and only a porter of AutoHotkey: from official to Chinese, from other languages to AutoHotkey, and show AutoHotkey to ordinary users sometimes.
aamii
Posts: 37
Joined: 23 May 2014, 03:50

Re: 如何获取中文首字母(AHK Unicode)

03 Aug 2014, 20:47

反过来查的问题,我现在这么解决:
①、在获取首字母的时候,包含多音字,比如“行走”输出为拼音串:[XH][Z]
②、用正则去匹配上面的串,这样不管你输入的是XZ还是HZ都能有效,查找到”行走“的。

仍然有的问题是:在①中,我当前用的是”汉字拼音首字母“对应表,用查表的方法获取。有没有像tmplishi那样的”方法“获得”多音字“呢?
User avatar
amnesiac
Posts: 186
Joined: 22 Nov 2013, 03:08
Location: Egret Island, China
Contact:

Re: 如何获取中文首字母(AHK Unicode)

16 Aug 2014, 03:47

@aamii
请到 viewtopic.php?f=27&t=4255 查看你所提问题的进一步讨论。
autu
Posts: 11
Joined: 04 Apr 2015, 11:09

Re: 【已解决】如何获取中文首字母(AHK Unicode)

20 Dec 2016, 08:59

以字母开始的话,如:“Unicode 中运行” 这个它就不会转为首字母,麻烦修正下
tmplinshi
Posts: 1045
Joined: 01 Oct 2013, 14:57

Re: 【已解决】如何获取中文首字母(AHK Unicode)

20 Dec 2016, 09:35

autu wrote:以字母开始的话,如:“Unicode 中运行” 这个它就不会转为首字母,麻烦修正下

已修复
autu
Posts: 11
Joined: 04 Apr 2015, 11:09

Re: 【已解决】如何获取中文首字母(AHK Unicode)

20 Dec 2016, 20:48

太感谢了!
没想到的是还这么快,再次谢谢!

Return to “请求帮助”

Who is online

Users browsing this forum: Bing [Bot] and 2 guests