如何处理中文字符?

hhzxf 2003-07-08 02:40:04
有一段文字,有中文字符也有英文字符,现在我要把它分成几段,每段不能超100个字,在程序中怎么分。我用了几种方法,总分出现乱码(string类弄存储的)。
...全文
43 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengerfeifei 2003-07-08
  • 打赏
  • 举报
回复
先分成字符
判断每个字符是否大于A0大于的就是中文字符开头。
linx88 2003-07-08
  • 打赏
  • 举报
回复
以上是将字符,和汉字转换成宽字符串的例子,你修改一下,在判断切分字符串的边界处就可以了。
linx88 2003-07-08
  • 打赏
  • 举报
回复
procedure StringToMultiByte(s: string; var buf: array of word; bufstr: integer;
size: integer);
var
pos, len: integer;
low, high: word;
num: integer;
begin
num := bufstr;
pos := 1; // string start pos always is 1;
len := length(s);
while pos <= len do
begin
if num < (size - 1) then
begin
high := byte(s[pos]);
if high > 128 then // ºº×Ö
begin
low := byte(s[pos + 1]);
buf[num] := (high shl 8) + low;
inc(pos, 2);
end
else
begin // Ó¢ÎÄ
buf[num] := high;
inc(pos, 1);
end;
inc(num, 1);
end
else
begin
buf[num] := 0;
break;
end;
end;
buf[num] := 0;
end;
JackWu 2003-07-08
  • 打赏
  • 举报
回复
AdjustLineBreaks在SysUtils单元
JackWu 2003-07-08
  • 打赏
  • 举报
回复
请参照function AdjustLineBreaks(const S: string; Style: TTextLineBreakStyle): string编写自己的函数
firetoucher 2003-07-08
  • 打赏
  • 举报
回复
1 自己通过判断字符的最高位为1则为中文字符,然后自己计算
2 用widestring,分好了再转换为string

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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