从字符串中提取单词、从字符串中提取汉字的函数

本文介绍了一种从字符串中提取单词和汉字的方法,通过定义特定的函数实现文本内容的有效解析。
{从字符串中提取单词的函数}
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;

  菊子曰:我在用着的 博客编辑软件

转载于:https://www.cnblogs.com/longqcc/archive/2013/05/18/3084875.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值