本文整理自网络,侵删。
{从字符串中提取单词的函数}
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
;
相关阅读 >>
更多相关阅读请进入《Delphi》频道 >>