如何判断可见字符 Unicode
一个Unicode字符串,如何判断其中都是可见字符?
//根据国标 GB2312 的中文汉字及符号 区位码的范围判断
Function CheckIsGB2312(Char : WideChar) : Boolean;
var
S : AnsiString;
begin
S := Char;
Result := (PByte(integer(S)+)^>=$A1) and (PByte(integer(S)+)^<=$FE) and
(PByte(S)^>=$B0) and (PByte(S)^<=$F7);
end; //检查是否都是可见英文字符或者汉字及符号,全部是返回True否则False,空格认为可见
Function StrIsCanShow(Const WS : WideString) : Boolean;
var
i : integer;
P : PWideChar;
begin
Result := True;
P := Pointer(WS);
for i:= to Length(WS) do begin
if not (
((PWord(P)^>=$) and (PWord(P)^<=$7E)) //Ansi 可见字符
or CheckIsGB2312(P^) //GB2312汉字及符号
) then begin
Result := False;
Break;
end;
Inc(P);
end;
end;
注意string从来不是widestring,D2009之前string是ansistring, 从D2009开始,string是unicodestring。
unicodestring和widestring虽然都是UTF-16字符串,但不是同一种类型,unicodestring是Delphi原生类型,支持引用计数和代码页,使用Delphi RTL内存管理,
widestring是Windows COM BSTR类型的封装,不支持引用计数和代码页,使用Windows内存管理。
https://bbs.csdn.net/topics/370029342
https://bbs.csdn.net/topics/392047346?page=1
如何判断可见字符 Unicode的更多相关文章
- C# 判断中文字符(字符串)
在unicode 字符串中,中文的范围是在4E00..9FFF:CJK Unified Ideographs.通过对字符的unicode编码进行判断来确定字符是否为中文.protected bool ...
- C# 之 判断一个字符是否是汉字
判断一个字符是不是汉字通常有三种方法: [1] 用 ASCII 码判断:[2] 用汉字的 UNICODE 编码范围判断:[3] 用正则表达式判断. 1.用ASCII码判断 在 ASCII码表中,英文的 ...
- Java 如何判断一个字符是否是数字或字母
在C++中, 可以用isdigit()判断一个字符是否是数字,可以用isalpha()判断一个字符是否是字母,还有很多,都在<cctype>头文件中 而类似的方法在JAVA中,则主要是Ch ...
- python输入一行字符,判断不同字符数量
输入一行字符,判断不同字符的数量, 分别用for循环和while循环完成 for循环 运用了字符串方法, isupper()判断是否为大写字母 islower()判断是否为小写字母 isdigit() ...
- Python判断输入字符类型
"""从键盘上输入 一个字符,判断其字符类型.""" while True: char = input("请输入需要判断的字符:& ...
- Java判断一个字符是否是数字的几种方法的代码
在工作期间,将写内容过程经常用到的一些内容段做个记录,下面内容是关于Java判断一个字符是否是数字的几种方法的内容,希望能对码农们有好处. public class Test{ public stat ...
- day05 判断敏感字符
1.判断一个字符是不是敏感字符: in 1.str v ="年龄多大了" if "大" in v: print("敏感") 2.list/t ...
- 【实用类String】String类方法的应用案例:查找判断指定字符出现的次数和位置
一.应用要求 输入一个字符串,再输入要查找的字符,判断该字符在该字符串中出现的次数. 二.实现思路 1.使用substring()方法将字符串的每个字符存入数组 2.比较数组每个字符是否与指定的字符相 ...
- Java判断中文字符
package com.jsoft.test; import java.util.regex.Pattern; /** * 判断中文字符 * * @author jim * @date 2017-12 ...
随机推荐
- 【转】PHP解析带CDATA的XML方法
XML文件,如下 <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName& ...
- mysql常用备份命令和shell备份脚本
备份多个数据库可以使用如下命令:mysqldump -uroot -p123456 --databases test1 test2 test3 > /home/test/dump.sql; 恢复 ...
- Javascript异步编程之setTimeout与setInterval详解分析(一)
Javascript异步编程之setTimeout与setInterval 在谈到异步编程时,本人最主要会从以下三个方面来总结异步编程(注意:特别解释:是总结,本人也是菜鸟,所以总结不好的,请各位大牛 ...
- PAT B1035 插入与归并 (25 分)
根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置.如此迭代直到全部元素有序. 归并排序进行如下迭 ...
- flask 入门(二)
Windows(提前安好virtualenv:pip install virtualenv) 一.准备: 1.启动pycharm 2.创建flask项目 二.基本库安装和设置 1.创建沙盒virt ...
- HDU 3861 The King’s Problem(tarjan缩点+最小路径覆盖:sig-最大二分匹配数,经典题)
The King’s Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- day35
今日内容: 1.进程间互相通信(IPC机制) 2.生产者消费者模型 3.线程理论 4.线程开启的两种方式 5.线程相关属性方法 6.守护线程 7.线程互斥锁 1.进程间相互通信(IPC机制) 主要是一 ...
- oracle 在存储过程或函数中得到异常sql
BEGIN SQLSTR := 'UPDATE TBL ...'; EXECUTE IMMEDIATE SQLSTR; EXCEPTION WHEN OTHERS INSERT INTO LOG_TA ...
- sql查询语句示例
今天没事又专门学习了一下sql查询语句,个人感觉太重要了,于是就找了网上的一个示例自己练了起来,感觉学到了很多,下面跟大家分享一下sql查询语句的示例操作. 首先,我建了5张表,分别如下: (a)学生 ...
- C语言如何向系统接要存
C语言如何向系统接要存,就有这么三种方式: 1.向栈要. 2.向堆要. 3.向数据段要. 这一下就扯出了三种内存空间,内存空间的本质是一样的,一个地址对应一个方框,方框里可以放数据.但是为了更好的去 ...