给各位出道难题:如何判断字符串是否为拼音?100分送给解答最好的人。

应该网 2007-12-20 02:57:13
假如有一个这样的列表:

123ttuu
pinyin
ta
niwo
niwota
52wo

如何判断字符串为拼音呢?

要求程序能自动判断:
123ttuu  非拼音(这个好解决,带数字的就不是拼音)
pinyin  拼音(pin yin)
ta    拼音(ta)
niwo   拼音(ni wo)
niwota  拼音(ni wo ta)
52wo   非拼音(这个好解决,带数字的就不是拼音)

不要求你解释出拼音的含义,只要判断是否是拼音就可以,并且判断由几个字组成(见括号里面的内容)

这个问题难倒了我,希望大侠们挑战下自己,给小弟点提示,或者给出解决方案,万分感谢。
...全文
2387 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanchun0222 2011-05-06
  • 打赏
  • 举报
回复
这里有个PHP写的函数满足你的要求啊。 http://www.coderbolg.com/content/139.html
剑心永远OK 2008-04-15
  • 打赏
  • 举报
回复
很好很强大
应该网 2007-12-21
  • 打赏
  • 举报
回复
再次谢谢你们。

本来想100分给一个人的,但确实不好分配。

Meteorlet 兄弟修改过后确实不错。

以前贴子不够分,我就转账。^_^

不过,转分给你们也没什么意义(没得专家分得)
SysTem128 2007-12-21
  • 打赏
  • 举报
回复
之前想用正则实现的.
但发现特殊情况过多.
用正则的话不是很好控制.
但基本思想都是一样的.
源代码还需要很多改进,没时间弄了.
你自己搞定吧:)

分数很多,很好,很强大,很和谐……
应该网 2007-12-21
  • 打赏
  • 举报
回复
真的很强!!!

结贴散分。

Meteorlet 2007-12-21
  • 打赏
  • 举报
回复
<?php
$funList = 'a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z';#'zh','ch','sh' #惡曣
$fuList = 'ong|ing|eng|ang|vn|un|in|en|an|er|ve|ie|iu|ou|ao|ui|ei|ai|u|i|e|o|a';#栾曣
$splist = 'ang|an|ao|ai|en|er|ou|a|o|e'; #摿庩

$match = array('123ttuu','pinyin','ta','niwo','niwota','52wo','paogang', 'pingan', 'xian');
$resultList = array();
foreach ($match as $key => $value)
{
if(preg_match('/[0-9]/', $value))
continue;
if(preg_match_all("/(($funList)($fuList))|($splist)/", $value, $matches))
{
echo "$value: ";
for($i = 0; $i < count($matches[0]); $i ++)
{
echo ($matches[0][$i]) . " ";
}
echo "<br>\n";
}
}
?>
windlysnowly 2007-12-21
  • 打赏
  • 举报
回复
substr(exp,1,1000000000000000000000000)


in (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z)
fishfun123 2007-12-21
  • 打赏
  • 举报
回复
xian, 你想是一个字(先)还是两个字(西安)?
如果有英文单词呢?比如you, he?
没什么东西是完美的,差不多就行了.
应该网 2007-12-21
  • 打赏
  • 举报
回复
试了一下SysTem128 的程序,很强啊。

不过还有一个问题,如下:

分析 niwota 的时候,程序分析出来是: ni wota,而不是理想的:ni wo ta

非常感谢了。
应该网 2007-12-21
  • 打赏
  • 举报
回复
谢谢大家,我先拿来看看。
SysTem128 2007-12-20
  • 打赏
  • 举报
回复

<?php
set_time_limit(3);
$funList = 'a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z';#'zh','ch','sh' #声母
$funList = explode('|',$funList);
krsort($funList);
$fuList = 'a|o|e|i|u|ai|ei|ui|ao|ou|iu|ie|ve|er|an|en|in|un|vn|ang|eng|ing|ong';#韵母
$fuList = explode('|',$fuList);
krsort($fuList);
$match = array('123ttuu','pinyin','ta','niwo','niwota','52wo','paogang');
$resultList = array();
foreach ($match as $key => $value)
{
$pinString = $value;
preg_match("/(^[a-zA-Z]+$)/",$pinString,$result); #是否全为
if ($result)
{
foreach ($fuList as $fu)
{
if (strpos($pinString,$fu))
{
$fuUsed[] = $fu;
foreach ($fuUsed as $used)
{
if (!is_null(strpos($used,$fu)) && $used != $fu)
{
continue 2;
}
}
$pinString = str_ireplace($fu,$fu.'{|}',$pinString);
$matList = explode('{|}',$pinString);
}
}
if (count($matList)>=1)
{
foreach ($matList as $mat)
{
$first = substr($mat,-1,1);
if (in_array($first,$funList))
{
$resultList[$key][0] += 1;
$resultList[$key][1][] = $mat;
}
}
}
}
}
print_r($resultList);
?>


不知道指针为什么不走了……单个用是Ok的.
先放出来,明天继续。
SysTem128 2007-12-20
  • 打赏
  • 举报
回复
http://www.21andy.com/blog/20071108/659.html

正在按发音给你写算法.按拼音匹配是笨办法.
应该网 2007-12-20
  • 打赏
  • 举报
回复
先谢了,我在本地设置好了iis7,可以使用,不过问题来了。

rt("pin")

提示是拼音

rt("pinyin") 提示不是拼音,这不是我想要的结果。

嘿嘿,不过有了你的东东,我自己有信心写一个PHP版本了。
tantaiyizu 2007-12-20
  • 打赏
  • 举报
回复

啊? 你在客户端去用下嘛

服务器段需要 Server.CreateObject吧
应该网 2007-12-20
  • 打赏
  • 举报
回复
2002年后我转型php了,asp的所有东东都忘记得差不多了。

只记得:response.write 之类的了。

服务器提示MsgBox 没权限,我就换成了response.write 

结果提示都不是拼音,不知道Set d = CreateObject("Scripting.Dictionary")这一句是否也要权限或者组件某某之类。
应该网 2007-12-20
  • 打赏
  • 举报
回复
rt("pin")
rt("pinyin")

都提示不是拼音。
tantaiyizu 2007-12-20
  • 打赏
  • 举报
回复

呵呵 ,我在应用过程中还没发现什么问题 ,应该都在里面了吧
应该网 2007-12-20
  • 打赏
  • 举报
回复
楼上的强!!!

所有的拼音都在里面了吗?
tantaiyizu 2007-12-20
  • 打赏
  • 举报
回复

d.add "shu",-13601
d.add "shua",-13406
d.add "shuai",-13404
d.add "shuan",-13400
d.add "shuang",-13398
d.add "shui",-13395
d.add "shun",-13391
d.add "shuo",-13387
d.add "si",-13383
d.add "song",-13367
d.add "sou",-13359
d.add "su",-13356
d.add "suan",-13343
d.add "sui",-13340
d.add "sun",-13329
d.add "suo",-13326
d.add "ta",-13318
d.add "tai",-13147
d.add "tan",-13138
d.add "tang",-13120
d.add "tao",-13107
d.add "te",-13096
d.add "teng",-13095
d.add "ti",-13091
d.add "tian",-13076
d.add "tiao",-13068
d.add "tie",-13063
d.add "ting",-13060
d.add "tong",-12888
d.add "tou",-12875
d.add "tu",-12871
d.add "tuan",-12860
d.add "tui",-12858
d.add "tun",-12852
d.add "tuo",-12849
d.add "wa",-12838
d.add "wai",-12831
d.add "wan",-12829
d.add "wang",-12812
d.add "wei",-12802
d.add "wen",-12607
d.add "weng",-12597
d.add "wo",-12594
d.add "wu",-12585
d.add "xi",-12556
d.add "xia",-12359
d.add "xian",-12346
d.add "xiang",-12320
d.add "xiao",-12300
d.add "xie",-12120
d.add "xin",-12099
d.add "xing",-12089
d.add "xiong",-12074
d.add "xiu",-12067
d.add "xu",-12058
d.add "xuan",-12039
d.add "xue",-11867
d.add "xun",-11861
d.add "ya",-11847
d.add "yan",-11831
d.add "yang",-11798
d.add "yao",-11781
d.add "ye",-11604
d.add "yi",-11589
d.add "yin",-11536
d.add "ying",-11358
d.add "yo",-11340
d.add "yong",-11339
d.add "you",-11324
d.add "yu",-11303
d.add "yuan",-11097
d.add "yue",-11077
d.add "yun",-11067
d.add "za",-11055
d.add "zai",-11052
d.add "zan",-11045
d.add "zang",-11041
d.add "zao",-11038
d.add "ze",-11024
d.add "zei",-11020
d.add "zen",-11019
d.add "zeng",-11018
d.add "zha",-11014
d.add "zhai",-10838
d.add "zhan",-10832
d.add "zhang",-10815
d.add "zhao",-10800
d.add "zhe",-10790
d.add "zhen",-10780
d.add "zheng",-10764
d.add "zhi",-10587
d.add "zhong",-10544
d.add "zhou",-10533
d.add "zhu",-10519
d.add "zhua",-10331
d.add "zhuai",-10329
d.add "zhuan",-10328
d.add "zhuang",-10322
d.add "zhui",-10315
d.add "zhun",-10309
d.add "zhuo",-10307
d.add "zi",-10296
d.add "zong",-10281
d.add "zou",-10274
d.add "zu",-10270
d.add "zuan",-10262
d.add "zui",-10260
d.add "zun",-10256
d.add "zuo",-10254

''
Function rt(py)

a=d.Items
b=d.keys

For i = 0 To d.count-1
If py = b(i) Then
MsgBox "是拼音"
Exit Function
End If
next

MsgBox "不是拼音"

End Function
tantaiyizu 2007-12-20
  • 打赏
  • 举报
回复

Set d = CreateObject("Scripting.Dictionary")
d.add "a",-20319
d.add "ai",-20317
d.add "an",-20304
d.add "ang",-20295
d.add "ao",-20292
d.add "ba",-20283
d.add "bai",-20265
d.add "ban",-20257
d.add "bang",-20242
d.add "bao",-20230
d.add "bei",-20051
d.add "ben",-20036
d.add "beng",-20032
d.add "bi",-20026
d.add "bian",-20002
d.add "biao",-19990
d.add "bie",-19986
d.add "bin",-19982
d.add "bing",-19976
d.add "bo",-19805
d.add "bu",-19784
d.add "ca",-19775
d.add "cai",-19774
d.add "can",-19763
d.add "cang",-19756
d.add "cao",-19751
d.add "ce",-19746
d.add "ceng",-19741
d.add "cha",-19739
d.add "chai",-19728
d.add "chan",-19725
d.add "chang",-19715
d.add "chao",-19540
d.add "che",-19531
d.add "chen",-19525
d.add "cheng",-19515
d.add "chi",-19500
d.add "chong",-19484
d.add "chou",-19479
d.add "chu",-19467
d.add "chuai",-19289
d.add "chuan",-19288
d.add "chuang",-19281
d.add "chui",-19275
d.add "chun",-19270
d.add "chuo",-19263
d.add "ci",-19261
d.add "cong",-19249
d.add "cou",-19243
d.add "cu",-19242
d.add "cuan",-19238
d.add "cui",-19235
d.add "cun",-19227
d.add "cuo",-19224
d.add "da",-19218
d.add "dai",-19212
d.add "dan",-19038
d.add "dang",-19023
d.add "dao",-19018
d.add "de",-19006
d.add "deng",-19003
d.add "di",-18996
d.add "dian",-18977
d.add "diao",-18961
d.add "die",-18952
d.add "ding",-18783
d.add "diu",-18774
d.add "dong",-18773
d.add "dou",-18763
d.add "du",-18756
d.add "duan",-18741
d.add "dui",-18735
d.add "dun",-18731
d.add "duo",-18722
d.add "e",-18710
d.add "en",-18697
d.add "er",-18696
d.add "fa",-18526
d.add "fan",-18518
d.add "fang",-18501
d.add "fei",-18490
d.add "fen",-18478
d.add "feng",-18463
d.add "fo",-18448
d.add "fou",-18447
d.add "fu",-18446
d.add "ga",-18239
d.add "gai",-18237
d.add "gan",-18231
d.add "gang",-18220
d.add "gao",-18211
d.add "ge",-18201
d.add "gei",-18184
d.add "gen",-18183
d.add "geng",-18181
d.add "gong",-18012
d.add "gou",-17997
d.add "gu",-17988
d.add "gua",-17970
d.add "guai",-17964
d.add "guan",-17961
d.add "guang",-17950
d.add "gui",-17947
d.add "gun",-17931
d.add "guo",-17928
d.add "ha",-17922
d.add "hai",-17759
d.add "han",-17752
d.add "hang",-17733
d.add "hao",-17730
d.add "he",-17721
d.add "hei",-17703
d.add "hen",-17701
d.add "heng",-17697
d.add "hong",-17692
d.add "hou",-17683
d.add "hu",-17676
d.add "hua",-17496
d.add "huai",-17487
d.add "huan",-17482
d.add "huang",-17468
d.add "hui",-17454
d.add "hun",-17433
d.add "huo",-17427
d.add "ji",-17417
d.add "jia",-17202
d.add "jian",-17185
d.add "jiang",-16983
d.add "jiao",-16970
d.add "jie",-16942
d.add "jin",-16915
d.add "jing",-16733
d.add "jiong",-16708
d.add "jiu",-16706
d.add "ju",-16689
d.add "juan",-16664
d.add "jue",-16657
d.add "jun",-16647
d.add "ka",-16474
d.add "kai",-16470
d.add "kan",-16465
d.add "kang",-16459
d.add "kao",-16452
d.add "ke",-16448
d.add "ken",-16433
d.add "keng",-16429
d.add "kong",-16427
d.add "kou",-16423
d.add "ku",-16419
d.add "kua",-16412
d.add "kuai",-16407
d.add "kuan",-16403
d.add "kuang",-16401
d.add "kui",-16393
d.add "kun",-16220
d.add "kuo",-16216
d.add "la",-16212
d.add "lai",-16205
d.add "lan",-16202
d.add "lang",-16187
d.add "lao",-16180
d.add "le",-16171
d.add "lei",-16169
d.add "leng",-16158
d.add "li",-16155
d.add "lia",-15959
d.add "lian",-15958
d.add "liang",-15944
d.add "liao",-15933
d.add "lie",-15920
d.add "lin",-15915
d.add "ling",-15903
d.add "liu",-15889
d.add "long",-15878
d.add "lou",-15707
d.add "lu",-15701
d.add "lv",-15681
d.add "luan",-15667
d.add "lue",-15661
d.add "lun",-15659
d.add "luo",-15652
d.add "ma",-15640
d.add "mai",-15631
d.add "man",-15625
d.add "mang",-15454
d.add "mao",-15448
d.add "me",-15436
d.add "mei",-15435
d.add "men",-15419
d.add "meng",-15416
d.add "mi",-15408
d.add "mian",-15394
d.add "miao",-15385
d.add "mie",-15377
d.add "min",-15375
d.add "ming",-15369
d.add "miu",-15363
d.add "mo",-15362
d.add "mou",-15183
d.add "mu",-15180
d.add "na",-15165
d.add "nai",-15158
d.add "nan",-15153
d.add "nang",-15150
d.add "nao",-15149
d.add "ne",-15144
d.add "nei",-15143
d.add "nen",-15141
d.add "neng",-15140
d.add "ni",-15139
d.add "nian",-15128
d.add "niang",-15121
d.add "niao",-15119
d.add "nie",-15117
d.add "nin",-15110
d.add "ning",-15109
d.add "niu",-14941
d.add "nong",-14937
d.add "nu",-14933
d.add "nv",-14930
d.add "nuan",-14929
d.add "nue",-14928
d.add "nuo",-14926
d.add "o",-14922
d.add "ou",-14921
d.add "pa",-14914
d.add "pai",-14908
d.add "pan",-14902
d.add "pang",-14894
d.add "pao",-14889
d.add "pei",-14882
d.add "pen",-14873
d.add "peng",-14871
d.add "pi",-14857
d.add "pian",-14678
d.add "piao",-14674
d.add "pie",-14670
d.add "pin",-14668
d.add "ping",-14663
d.add "po",-14654
d.add "pu",-14645
d.add "qi",-14630
d.add "qia",-14594
d.add "qian",-14429
d.add "qiang",-14407
d.add "qiao",-14399
d.add "qie",-14384
d.add "qin",-14379
d.add "qing",-14368
d.add "qiong",-14355
d.add "qiu",-14353
d.add "qu",-14345
d.add "quan",-14170
d.add "que",-14159
d.add "qun",-14151
d.add "ran",-14149
d.add "rang",-14145
d.add "rao",-14140
d.add "re",-14137
d.add "ren",-14135
d.add "reng",-14125
d.add "ri",-14123
d.add "rong",-14122
d.add "rou",-14112
d.add "ru",-14109
d.add "ruan",-14099
d.add "rui",-14097
d.add "run",-14094
d.add "ruo",-14092
d.add "sa",-14090
d.add "sai",-14087
d.add "san",-14083
d.add "sang",-13917
d.add "sao",-13914
d.add "se",-13910
d.add "sen",-13907
d.add "seng",-13906
d.add "sha",-13905
d.add "shai",-13896
d.add "shan",-13894
d.add "shang",-13878
d.add "shao",-13870
d.add "she",-13859
d.add "shen",-13847
d.add "sheng",-13831
d.add "shi",-13658
d.add "shou",-13611

加载更多回复(1)

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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