[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
没运行你的代码, 但不知你是否充分考虑了边缘问题
  1. (echo 阿& echo 啊& echo 呵& echo 吖) | sort
  2. (echo 做& echo 坐& echo 昨) | sort
  3. if 坐 lss 昨 echo oh
复制代码
1

评分人数

    • CrLf: 感谢指正!技术 + 1

TOP

本帖最后由 aa77dd@163.com 于 2015-8-11 16:27 编辑

回复 6# CrLf
  1. set input=坐下
  2. echo;%input%
  3. call :py input newstr
  4. echo !newstr!
  5. echo;
复制代码
得到的结果
  1. 坐下
  2. 坐 xia
复制代码
如果 "昨" 是 zuo 音的第一个字, 你的代码会把排序在 "昨" 后面的汉字都忽略掉而不给出拼音的翻译结果,  这个边界必须有不同的处理代码
  1. if !char! geq 吖 if !char! leq 昨
复制代码
应该改成
  1. if !char! geq 吖 if !char! leq "zuo 音的最后一个汉字"
复制代码
1

评分人数

    • CrLf: 感谢指正!技术 + 1

TOP

本帖最后由 aa77dd@163.com 于 2015-8-11 20:13 编辑

因为想到可以用 sort | findstr 来找到索引数字, 所以就实现了一下

没考虑特殊字符, zuo 音的最后一个字符不知道是什么, 如果遇到排在 昨 后面但没有读音的字符(可能就不是汉字吧, 当然也不是英文字母之类的), 这里也会处理成 有拼音 zuo, 嘿嘿

至于效率速度这些东东, 更木有考虑了
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. call :init
  4. set "str=你好, 世界 hello world 昨坐安按阿吖拼音汉字"
  5. set "PY="
  6. for /l %%i in (0 1 28) do (
  7.     set "chr=!str:~%%i,1!"
  8.     if "!chr!" lss "吖" (
  9.         set "PY=!PY!!chr!"
  10.     ) else (
  11.         for %%c in (!chr!) do if "!inds:%%c=!" neq "%inds%" (
  12.             for /f "skip=1 delims=:" %%a in ('(echo !inds!!chr!^)^|sort^|findstr /n "!chr!"') do set "PY=!PY! !$%%a! "
  13.         ) else (
  14.             for /f "delims=:" %%a in ('(echo !inds!!chr!^)^|sort^|findstr /n "!chr!"') do set "PY=!PY! !$%%a! "
  15.         )
  16.     )
  17. )
  18. set str
  19. set PY
  20. pause
  21. exit
  22. :init
  23. set "cnt=1"
  24. for %%a in (
  25. 吖a 哎ai 安an 肮ang 凹ao 八ba 挀bai 扳ban 邦bang 勹bao 萡be 陂bei 奔ben 伻beng 皀bi
  26. 边bian 标biao 憋bie 汃bin 仌bing 癶bo 卜bu 攃ca 猜cai 参can 仓cang 撡cao 刂ce 岑cen 噌ceng
  27. 叉cha 犲chai 觇chan 伥chang 抄chao 车che 抻chen 阷cheng 吃chi 冲chong 抽chou 出chu 欻chua 揣chuai 川chuan
  28. 刅chuang 吹chui 杶chun 逴chuo 呲ci 匆cong 凑cou 粗cu 汆cuan 崔cui 邨cun 搓cuo 咑da 呆dai 亻dan
  29. 当dang 刀dao 恴de 揼den 灯deng 仾di 嗲dia 敁dian 刁diao 爹die 丁ding 丟diu 东dong 吺dou 剢du
  30. 剬duan 垖dui 吨dun 多duo 妸e 诶ei 奀en 鞥eng 儿er 发fa 帆fan 匚fang 飞fei 分fen 丰feng
  31. 仏fo 紑fou 夫fu 旮ga 侅gai 甘gan 冈gang 皋gao 戈ge 给gei 根gen 刯geng 工gong 勾gou 估gu
  32. 瓜gua 乖guai 关guan 光guang 归gui 衮gun 呙guo 哈ha 还hai 佄han 夯hang 蒿hao 诃he 黒hei 拫hen
  33. 亨heng 叿hong 齁hou 乎hu 花hua 怀huai 欢huan 巟huang 灰hui 昏hun 吙huo 丌ji 加jia 戋jian 江jiang
  34. 艽jiao 阶jie 巾jin 仱jing 坰jiong 丩jiu 圧ju 姢juan 撅jue 军jun 咔ka 开kai 刊kan 闶kang 尻kao
  35. 苛ke 肎ken 劥keng 空kong 抠kou 扝ku 夸kua 蒯kuai 宽kuan 匡kuang 亏kui 坤kun 扩kuo 垃la 来lai
  36. 兰lan 啷lang 捞lao 仂le 雷lei 塄leng 唎li 嫾lian 簗liang 蹽liao 毟lie 拎lin 伶ling 溜liu 囖lo
  37. 龙long 瞜lou 撸lu 峦luan 掠lue 抡lun 啰luo 驴lv 略lve 妈ma 埋mai 颟man 牤mang 猫mao 孭me
  38. 沒mei 椚men 擝meng 咪mi 芇mian 喵miao 吀mie 民min 名ming 谬miu 摸mo 哞mou 呒mu 乸na 腉nai
  39. 囡nan 囔nang 孬nao 讷ne 馁nei 嫩nen 能neng 妮ni 拈nian 娘niang 鸟niao 捏nie 脌nin 宁ning 牛niu
  40. 农nong 羺nou 奴nu 奻nuan 挪nuo 女nv 噢o 讴ou 帊pa 拍pai 眅pan 乓pang 抛pao 呸pei 喷pen
  41. 匉peng 丕pi 囨pian 剽piao 氕pie 拼pin 乒ping 攴po 剖pou 扑pu 七qi 掐qia 扦qian 羌qiang 悄qiao
  42. 切qie 钦qin 青qing 卭qiong 丘qiu 区qu 奍quan 炔qv 夋qun 冄ran 穣rang 荛rao 惹re 人ren 扔reng
  43. 日ri 戎rong 禸rou 邚ru 撋ruan 甤rui 闰run 叒ruo 仨sa 毢sai 三san 桒sang 掻sao 色se 森sen
  44. 僧seng 杀sha 筛shai 山shan 伤shang 捎shao 奢she 申shen 升sheng 尸shi 収shou 殳shu 刷shua 衰shuai 闩shuan
  45. 双shuang 谁shui 吮shun 说shuo 厶si 忪song 凁sou 苏su 狻suan 夊sui 孙sun 莏suo 他ta 咍tai 坍tan
  46. 汤tang 仐tao 忑te 膯teng 剔ti 天tian 旫tiao 帖tie 厅ting 囲tong 偷tou 凸tu 猯tuan 推tui 吞tun
  47. 乇tuo 屲wa 歪wai 弯wan 尪wang 危wei 昷wen 翁weng 挝wo 乌wu 夕xi 虾xia 仙xian 乡xiang 灲xiao
  48. 些xie 心xin 星xing 凶xiong 休xiu 戌xu 吅xuan 削xv 坃xun 丫ya 咽yan 央yang 幺yao 耶ye 一yi
  49. 乚yin 応ying 哟yo 佣yong 优you 迂yu 囦yuan 曰yv 晕yun 帀za 灾zai 兂zan 赃zang 遭zao 则ze
  50. 贼zei 怎zen 増zeng 扎zha 夈zhai 枬zhan 弡zhang 钊zhao 蜇zhe 贞zhen 凧zheng 之zhi 中zhong 舟zhou 朱zhu
  51. 抓zhua 跩zhuai 专zhuan 妆zhuang 隹zhui 迍zhun 拙zhuo 孖zi 宗zong 邹zou 租zu 劗zuan 厜zui 尊zun 昨zuo
  52. ) do (
  53.         set "tt=%%a"
  54.     set "inds=!inds!!tt:~0,1!&echo;"
  55.         set /a cnt+=1
  56.     set "$!cnt!=!tt:~1!"
  57. )
  58. exit /b
复制代码
1

评分人数

TOP

返回列表