Delphi 对汉字字符串的截取问题


本文整理自网络,侵删。

 在Delphi中,用Length来取字符长度时,会将汉字当成两个字节来计算,Copy把汉字当成两个来处理,可能截取半个汉字,那我们如何知道是否取的是汉字呢?是否把一个汉字取完整了呢?

其实,可以用ByteType对取出来的字符进行判断是一个单字符还是汉字的一部分!
mbLeadByte: 汉字的第一个字节
mbTrailByte: 汉字的第二个字节
mbSingleByte: 单个的字符,不是中文字符。
如果Copy出来的是汉字的第一个字节,就再多(或少)Copy一个,凑成完整的汉字。
如下例:

function GetText(strtxt:string;iLen:integer):string;
begin
//先判断要截取的字符串最后一个字节的类型
//如果为汉字的第一个字节则减(加)一位
if ByteType(strtxt,iLen) = mbLeadByte then
iLen := iLen - 1;

result := copy(strtxt,1,iLen) + "...";
end;

相关阅读 >>

Delphi 如何将颜色值转换为html格式?

Delphi case 语句中使用字符串

Delphi rest/post

Delphi 网上获取北京时间取字符串与字符串中间的字符

Delphi 从数组中任取一个

Delphi 字符串与内存流和文件的快速转换函数

Delphi sqlite防止插入重复数据的方法

Delphi正则表达式匹配中文

Delphi 使用钩子函数 - 钩子链和 callnexthookex 的返回值

Delphi 防止刷新时闪烁的终极解决办法

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...