vectra 发表于 2017-9-22 15:28:13

返回字符串的拼音首字母,支持GBK及UTF-8编码

本帖最后由 vectra 于 2017-9-22 15:29 编辑

17年以来的新贴都不见了,有留档的我再发下恢复一下。原贴发表于 2017-1-2 19:48

已知问题:
1、不能处理多音字

(defun pingyin (str / asc lst rt)
(setq lst (vl-string->list str))
(while lst
    (setq asc (+ (* (car lst) 256) (cadr lst) -65536)
    lst (cddr lst)
    )

    (setq rt (cons
         (cond
   ((<= -20319 asc -20284) "A")
   ((<= -20283 asc -19776) "B")
   ((<= -19775 asc -19219) "C")
   ((<= -19218 asc -18711) "D")
   ((<= -18710 asc -18527) "E")
   ((<= -18526 asc -18240) "F")
   ((<= -18239 asc -17923) "G")
   ((<= -17922 asc -17418) "H")
   ((<= -17922 asc -17418) "I")
   ((<= -17417 asc -16475) "J")
   ((<= -16474 asc -16213) "K")
   ((<= -16212 asc -15641) "L")
   ((<= -15640 asc -15166) "M")
   ((<= -15165 asc -14923) "N")
   ((<= -14922 asc -14915) "O")
   ((<= -14914 asc -14631) "P")
   ((<= -14630 asc -14150) "Q")
   ((<= -14149 asc -14091) "R")
   ((<= -14090 asc -13319) "S")
   ((<= -13318 asc -12839) "T")
   ((<= -12838 asc -12557) "W")
   ((<= -12556 asc -11848) "X")
   ((<= -11847 asc -11056) "Y")
   ((<= -11055 asc -10247) "Z")
   (t nil)
         )
         rt
       )
    )
)
(reverse rt)
)

演示:
_$ (pingyin "二次开发")
("E" "C" "K" "F")


13648893846 发表于 2017-9-22 16:01:48

str也分享出来才能用吧

vectra 发表于 2017-9-22 17:23:52

13648893846 发表于 2017-9-22 16:01
str也分享出来才能用吧

str是函数的参数 接受纯中文字符

happyboy75 发表于 2018-1-28 20:26:26

happyboy75 发表于 2018-1-28 20:26:58

不错 支持一下

zq19890201 发表于 2019-8-13 11:52:32

虽然还有几行代码看不懂但是还是学习了很多东东

z312144636 发表于 2024-5-6 14:07:10

不错 支持一下
页: [1]
查看完整版本: 返回字符串的拼音首字母,支持GBK及UTF-8编码