delphi 汉字字符串怎么比较

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 汉字字符串怎么比较相关的知识,希望对你有一定的参考价值。

a是tstrngs
name是输入的中文
a.DelimitedText := Memo1.Lines.Strings[k];
a.Delimiter := ' ';
能不能这么比较name > a[0]
memo1的内容如下
杜晓燕 6
卢婵娟 3
卢平波 5
唐桂军 0
唐琴琴 2
王永兴 1
竺柯科 4

参考技术A 这样肯定不行的,汉字比较它是根据拼音来比较的。我觉得还是根据序列号比较吧!追问

序列号是无法解决这个问题的,嗯。上面说了 用WideCompareText这方法就行

追答

哦,我其实很久没用Delphi了,至于高手,别提了。

参考技术B 如果你是想数组中包含某字符串的话不如使用
if pos(name,a[0]) >0 then 这样的语句追问

问题是假如不包含,用的是2分查找,是往上找,还是往下找,总得有个比较吧

追答

2分查找是什么呢?

追问

我想你是个高手,你不会不知道二分查找这方法吧。。 现在这个问题我解决了,用WideCompareText这个函数就行了

参考技术C 这样比较有什么意义呢?追问

就是按名字排序的 然后想用2分查找 找出这个名字 其中必定用到了比较

如何在JS中中文字符串如何比较

js里面比较中文字符串实际是比较中文字符串的unicode编码值!
第一个汉字的unicode编码是:19968 表示汉字“一”;
最后一个汉字的unicode编码是:40869 标识汉字“龥”(yu,四声);
开始和结束之间的unicode代码区间是计算机能打出来的所有汉字。
比较的话可以直接用运算符比较,例如:

var a="一";
var b="龥";
a>b //false;
a<b //true
a==b //false
a===b //false
//但是不能用“-”号,用“-”号js会尝试强转a变量的值为number,如果不能转成功会显示NaN,
//NaN <a href="https://www.baidu.com/s?wd=%E5%8A%A0%E5%87%8F%E4%B9%98%E9%99%A4&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1d9nH6zuWT4mH6YuWfsnAm10ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnHRLP1nYP1TsPWfLPjbdP10zn0" target="_blank" class="baidu-highlight">加减乘除</a>结果都是NaN
//用“+”,js会优先执行拼接字符得到
a+b // "一龥"

实际计算机内部执行比较是有类似如下操作的:

var a="一";
var b="龥";
a.charCodeAt(0)>b.charCodeAt(0) // false
参考技术A 蕾不见经传鸭群闪亮湃

以上是关于delphi 汉字字符串怎么比较的主要内容,如果未能解决你的问题,请参考以下文章

delphi返回一个汉字的Unicode编码

Delphi判断字符串中是否包含汉字,并返回汉字位置

Delphi判断字符串中是否包含汉字,并返回汉字位置

delphi中SQL文取出的汉字为乱码

Delphi 判断是不是汉字

DELPHI中 一个汉字是算几个字符