【摘自万一的博客】 从字符串中提取单词、从字符串中提取汉字的函数

{从字符串中提取单词的函数}
procedure StrToWordList(str: string; var List: TStringList);
var
p: PChar;
i: Integer;
begin
if List = nil then List := TStringList.Create;
List.Clear;
{去除重复}
List.Sorted := True;
List.Duplicates := dupIgnore;

p := PChar(str);

{把单词以外的字符转为空格, 并把大写字母转小写}
while p^ <> #0 do
begin
case p^ of
'A'..'Z': p^ := Chr(Ord(p^) + 32);
'a'..'z', '0'..'9', '''', '-': ;
else p^ := #32;
end;
Inc(p);
end;

{用空格分离单词到列表}
List.Delimiter := #32;
List.DelimitedText := str;

{单词的开头应该是字母, 去除其他}
for i := List.Count - 1 downto 0 do
begin
if CharInSet(List[i][1], ['0'..'9', '-', '''']) then
List.Delete(i);
end;
end;

{从字符串中提取汉字的函数}
procedure StrToHanZiList(str: string; var List: TStringList);
var
p: PWideChar;
begin
if List = nil then List := TStringList.Create;
List.Clear;
{去除重复}
List.Sorted := True;
List.Duplicates := dupIgnore;

p := PWideChar(str);
while p^ <> #0 do
begin
case p^ of
#$4E00..#$9FA5: List.Add(p^);
end;
Inc(p);
end;
end;


【附带一个提取字符串内容的函数】
用下面函数:
function getstr(str:string):string;
var
beginpos,endpos:integer;
substr:string;
begin
result:='';
endpos:=pos('>',str);
substr:=copy(str,endpos+1,length(str)-endpos);
beginpos:=pos('<',substr);
result:=copy(substr,1,beginpos-1);
end;

调用时就写
getstr('<title>9.9</title>');
得到的是9.9
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值