截取指定长度的中英文混合字符串,且中文不破截断?如:
string str1 = "中国人ABC";
string str2 = "AB中国人C~"截取7位时最终显示str1="中国人A"//7位,这种情况正好!
str2="AB中国"//6位,宁可少一个字符也不要将最后一个汉字截破请问有什么办法?
string str1 = "中国人ABC";
string str2 = "AB中国人C~"截取7位时最终显示str1="中国人A"//7位,这种情况正好!
str2="AB中国"//6位,宁可少一个字符也不要将最后一个汉字截破请问有什么办法?
//入口参数:
// sData - 字符串
// iLen - 取出的字节数
// iMode - 遇到取出的最后一个字节是半个汉字时的处理方式
// 0-取半个汉字(默认), 1-丢弃半个汉字, 2-取完整的汉字
var
bChinesePrev: Boolean;
iLoop : Integer;
begin
bChinesePrev := False;
If iLen < Length(sData) + 1 Then
for iLoop := 1 to iLen do
if ord(sData[iLoop]) >= 160 then bChinesePrev := not bChinesePrev;
If bChinesePrev Then
Case iMode of
0 : Result := Copy(sData, 1, iLen);
1 : Result := Copy(sData, 1, iLen - 1);
2 : Result := Copy(sData, 1, iLen + 1);
end
else
Result := Copy(sData, 1, iLen);
end;procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage (LeftString('AB中国人', 6) + '!!!');
ShowMessage (LeftString('AB中国人', 7) + '!!!');
ShowMessage (LeftString('AB中国人', 7, 1) + '!!!');
ShowMessage (LeftString('AB中国人', 7, 2) + '!!!');
end;