首页 > 其他分享 >lazarus新的判断字符串是否为UTF8

lazarus新的判断字符串是否为UTF8

时间:2024-10-13 16:32:48浏览次数:1  
标签:begin end UTF8 else chr lazarus nBytes 字符串 FALSE

调用IsStringUTF8来判断string是否包含UTF8(中文);

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsStringUTF8(edit1.Text)  then
     memo1.Lines.Add(s+'--包含中文')
  else
     memo1.Lines.Add(s+'--包含不中文');
end;

 

function IsStringUTF8(strtmp: string): Boolean;
var
  nBytes: byte;
  chr: byte;
  bAllAscii: Boolean;
  i: Integer;
  lengths:integer;
  str:PChar;
begin
  lengths:=length(strtmp);
  nBytes := 0;
  bAllAscii := TRUE;
  for i := 1 to lengths do
  begin
    chr := ord(strtmp[i]);
    if (chr and $80) <> 0 then
      bAllAscii := FALSE;

    if nBytes = 0 then
    begin
      if chr >= $80 then
      begin
        if chr >= $FC then
          nBytes := 6
        else if chr >= $F8 then
          nBytes := 5
        else if chr >= $F0 then
          nBytes := 4
        else if chr >= $E0 then
          nBytes := 3
        else if chr >= $C0 then
          nBytes := 2
        else
          Exit(FALSE);

        Dec(nBytes);
      end;
    end
    else
    begin
      if (chr and $C0) <> $80 then
        Exit(FALSE);

      Dec(nBytes);
    end;
  end;

  if nBytes > 0 then
    Exit(FALSE);

  if bAllAscii then
    Exit(FALSE);

  Result := TRUE;
end;

 

标签:begin,end,UTF8,else,chr,lazarus,nBytes,字符串,FALSE
From: https://www.cnblogs.com/qiufeng2014/p/18462523

相关文章

  • HALCON数据结构之字符串
    1.1String字符串的基本操作*将数字转换为字符串或修改字符串*tuple_string(T,Format,String)//HALCON语句*String:=T$Format//赋值操作*Formatstring由以下四个部分组成:*<flags><fieldwidth>.<precision><conversion字符>*1.flags标志*1.1字符'-'*......
  • 每日OJ题_牛客_NC101压缩字符串(一)_模拟_C++_Java
    目录牛客_NC101压缩字符串(一)_模拟题目解析C++代码Java代码牛客_NC101压缩字符串(一)_模拟压缩字符串(一)_牛客题霸_牛客网(nowcoder.com)描述:        利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2bc5a3。......
  • C++中比较方便的几个有关字符串的函数
    以下是一些个人总结的C++中对新手来说比较方便使用的几个有关字符串的函数。注意,说的是字符串而不是字符数组。如果有其他,欢迎在评论区留言。1.getline(),这个函数可以输入一行字符串,通常情况下,这个函数的使用通常如下://getline(cin,字符串名);     注意:getline()的......
  • Python字符串格式
    文章目录1.数字与ASCII码转换2.字符串输出格式(%)2.1数字进制与小数表示2.2字符串长度与对齐方式3.字符串输出格式(f'')4.字符串输出格式(format)5.转义字符(换行、Tab)6.字符串查找统计替换等1.数字与ASCII码转换将ASCII码转化为数字或者将数字转化为ASCII码时,......
  • 【原创】修复freeepascal自带的tdbf组件使用中文字段时转换为utf8时可能出现文字错的
    修复freeepascal自带的tdbf组件字段名称使用中文时转换为utf8时可能出现文字错:修改方法:打开fpcsrc\packages\fcl-db\src\dbase\dbf_dbffile.pas修改第816/1236/1246/1842/2758行,将AnsiUpperCase改为UpperCase。重新编译fpcsrc源码或将dbase文件夹拷贝到project目录,重新编译proje......
  • strlen计算字符串长度
    stringlengthstrlen是C语言标准库中的一个函数,用于计算字符串的长度,不包括终止符\0。在VisualC++(VC)中,你可以直接使用这个函数。只需要包含头文件<cstring>(在C++中)或<string.h>(在C中),然后就可以调用strlen函数了。例如,在C++中使用strlen的代码如下:#include<iost......
  • Java将数组转换成字符串
    Java将数组转换成字符串1.使用Arrays.toString()对于一维数组,可以使用java.util.Arrays类中的toString()方法:importjava.util.Arrays;publicclassMain{publicstaticvoidmain(String[]args){int[]nums={1,2,3,4,5};String......
  • 【C语言】语义陷阱(5):揭秘空指针与空字符串的微妙差异
    目录一、空指针(NullPointer)1.1.定义与表示1.2.用途1.3.安全性 1.4.注意事项1.5.空指针与野指针的区别1.5.1.特性对比1.5.2.安全性与风险1.5.3.编程实践二、指向空字符串的指针2.1.定义2.2.字符数组与空字符串2.3.指针的初始化2.4.空字符串的用途2......
  • 20241011-1 字符串函数自写
    #include<stdio.h>#include<string.h>unsignedintmystrlen(char*str){ unsignedintcount=0; while('\0'!=*(str++)) { count++; } returncount;}/*str1:目的字符串str2:源字符串*/voidmystrcpy(char*str1,char*str2){ ch......
  • 获取字符串的在html页面上的宽度并且若文字过长则缩小字体填充
    某个页面有这样一个需求:一个固定宽度的div,若文字过长,则缩小字体填充。看到同事采用的是用php的GD库的imagettfbbox函数来计算文字的宽度。imagettfbbox(float $size,float $angle,string $font_filename,string $string,array $options=[]): array|false 取得使用Tru......