一个利用拼音与汉字混合过滤字符串的函数
type
TChn = array[1..27] of string;
const
ChnA = '啊阿呵吖锕嗄腌爱矮挨哎碍癌艾唉哀蔼隘埃皑呆捱嗳嫒瑷暧砹锿霭嗌袄凹傲奥'+
'熬懊敖翱澳嚣坳嗷岙廒遨媪骜獒聱螯鏊鳌鏖拗按安暗岸俺案鞍氨胺谙埯揞犴庵'+
'桉铵鹌黯'#163#193#163#225+'Aa';
ChnB = '捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮'+
'拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍'+
'爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖'+
'蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋'+
'别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤'+
'泊驳捕卜哺补埠不布步簿部怖'#163#194#163#226+'Bb';
...
Chn: TChn =
(ChnA, ChnB, ChnC, ChnD, ChnE, ChnF, ChnG, ChnH, ChnI,
ChnJ, ChnK, ChnL, ChnM, ChnN, ChnO, ChnP, ChnQ, ChnR,
ChnS, ChnT, ChnU, ChnV, ChnW, ChnX, ChnY, ChnZ, Chn27);
function IsMBCSChar(const ch: Char): Boolean;
begin
Result := ord(ch) >127;//ByteType(ch, 1) <> mbSingleByte;
end;
function PYinChinese(ChnStr, InputStr: string): Boolean;
var
P, Q: PChar;
ID, IP: Integer;
Dt: string;
asterisk: Boolean;
function GetChinesePYID: Integer;
begin
case P^ of
'a'..'z': Result := ord(P^) - ord('a') + 1;
'A'..'Z': Result := ord(P^) - ord('A') + 1;
'0'..'9': Result := 27;
'*': Result := 28;
'?': Result := 29;
else
if IsMBCSChar(P^) then
Result := 0
else
Result := -1;
end;
end;
begin
InputStr := UpperCase(InputStr) + #0;
ChnStr := UpperCase(ChnStr) + #0;
P := Pointer(InputStr);
Q := Pointer(ChnStr);
Result := False;
MH := False;
while (P^ <> #0) and (Q^ <> #0) do
begin
ID := GetChinesePYID;
case ID of
1..26:
if not asterisk then
begin //待查的串
Dt := Q^;
Result := Pos(Dt, CHN[ID]) > 0;
Inc(P);
Inc(Q);
end
else //匹配星号
begin
Result := False;
while (Result = False) and (Q^ <> #0) do
begin
Dt := Q^;
Result := Pos(Dt, CHN[ID]) > 0;
Inc(Q);
end;
asterisk := False;
Inc(P);
end;
28: begin
Result := True;
asterisk := True;
Inc(P);
end;
29: begin
Result := True;
Inc(P);
Inc(Q);
end;
0: begin
if asterisk then
begin
Dt := Q;
IP := Pos(P^, Dt);
Result := IP > 0;
Inc(P);
Inc(Q, IP);
asterisk := False;
end
else
begin
Dt := Q;
Result := Pos(P^, Dt) = 1;
Inc(P);
Inc(Q);
end;
end;
-1: Result := False;
end;
if Result = False then Exit;
end;
if (P^ <> #0) and Result then Result := False;
end;
使用方法
var
AChstr: TStringList;
AChStr.Add('国际银行家');
AChStr.Add('过滤字符串');
...
找出包含 ‘*gj’ 或 (*国际) 或 (*g际) 的串
for I := 0 to AChStr.Count - 1 do
if PYinChinese(AChStr[I], '*GJ') then
dosomething;
下面给出本人一个软件中的示例
一个利用拼音与汉字混合过滤字符串的函数相关推荐
- 一个效率更高的全半角字符串截取函数
[原创,转载请注明:[url]http://wfyang.blog.51cto.com[/url]] 现在流传的那几个字符串截取函数,一般都是对字符串进行循环判断,如果要截取的串比较长,效率就成了一个 ...
- Csharp: 拼音转汉字字符搜索字符串
1 /// <summary> /// 拼音检索 /// </summary> /// <param name="strText">< ...
- php对中英文字符串进行截取,利用php怎么对中英文混合的字符串进行截取
利用php怎么对中英文混合的字符串进行截取 发布时间:2021-01-04 15:31:24 来源:亿速云 阅读:103 作者:Leah 利用php怎么对中英文混合的字符串进行截取?很多新手对此不是很 ...
- solr入门之參考淘宝搜索提示功能优化拼音加汉字搜索功能
首先看一下从淘宝输入搜索keyword获取到的一些数据信息: 第一张:使用拼音的全程来查询 能够看到提示的是匹配的转换的拼音的方式,看最后一个提示项 这里另一个在指定分类文件夹下搜索的功能,难道后台还 ...
- python字符串筛选输出_如何在Python中过滤字符串列表
Python使用列表数据类型在顺序索引中存储多个数据.它的工作方式类似于其他编程语言的数字数组.filter()方法是Python的一种非常有用的方法.可以使用filter()方法从Python中的任 ...
- solr入门之参考淘宝搜索提示功能优化拼音加汉字搜索功能
http://blog.csdn.net/sqh201030412/article/details/51211551 首先看一下从淘宝输入搜索关键字获取到的一些数据信息: 第一张:使用拼音的全程来查询 ...
- split函数python_Python字符串split函数知多少【Python每日一个知识点第75期】
Python字符串操作是一名开发人员的基本功,求职面试往往也会通过字符串相关考题来考验开发者对于语言基础的掌握.Python字符串的分割操作更是考察重点,能否灵活运用split被视为开发人员对于Pyt ...
- 字符数组的用法及字符串处理函数的用法
字符型数据是以字符的ASCII码存储在存储单元中的,一般占一个字节. 1.如何定义字符数组 char s[100]; 在字符数组中一个元素存放一个字符. 下面我们来说一下字符串处理函数的用法,在使用字 ...
- 字符串连接函数strcat
<C++宝典>第6章数组与字符串,本章将介绍一种数据集合类型--数组.与结构体不同,数组是同一类型数据的集合.而且在内存中,数组中的元素依次排列,一个紧邻一个.本节为大家介绍字符串连接函数 ...
最新文章
- linux c获得时间和设置时间
- java中wait和notify的虚假唤醒问题
- 神经网络与机器学习 笔记—基本知识点(上)
- 《Effect Java》学习笔记1———创建和销毁对象
- 鸟哥的Linux私房菜(服务器)- 主机基本安全之一:限制 Linux 对外连线的端口
- 【数据结构与算法】之深入解析“组合总和II”的求解思路与算法示例
- php 离线 gis,在 Web 页面中使用离线地图
- javascript获取事件源对象和产生事件的对象
- 循环删除List集合的错误
- linux进程通讯-纯文本文件1
- struts工作原理(图解)
- js+面向对象相关笔记(六)
- Qt5学习笔记之计时器
- GNS3使用Docker
- qt在linux下编译资源文件,linux下Qt qrc文件的编写与应用
- 系统分析师考试大纲(2009版)
- python设计一个学生类姓名年龄成绩_C# 编写学生类Student,包含学生姓名,成绩,设计一个友员函数sortDegree(),将学生成绩按大到小排序。...
- 晶联讯1353显示屏测试程序
- 爱普生Epson LQ-680K 打印机驱动
- 制作ubuntu引导盘,到安装Ubuntu系统流程
热门文章
- pythonocc_pythonocc
- YOLOV3实现车牌检测
- F2FS nat entry涉及的数据结构(linux 5.18.11)
- Edge 比 Chrome 快 29%?外媒:别拿过时的标准说事
- sws_scale转yuv到rgb
- JS 判断客户端环境(以及如何区分QQ客户端和QQ浏览器)
- 2023王道数据结构考研习题汇总
- duolingo 多邻国 安卓版无法使用口语功能
- python 效率 算法_python – 算法(prob solve)实现最快的运行时间
- dropout 关于keep_prob