操作符<或比;比较两个字符串时工作

How does operator < or > work when comparing two strings?

本文关键字:两个 字符串 工作 或比 比较 操作符      更新时间:2023-09-26

我使用<比较两个字符串,像这样:

console.log('ca'<'bb'); //false

我已经知道它比较字符的Unicode编号。因为c不小于b

但是当我这样做的时候:

console.log('ba'<'bb');//true

让我感到困惑,因为b不小于b本身,似乎它只是跳过它并比较下一个字符。

无论如何,我想知道当<>用于比较两个字符串时,这里的规则是什么,对于一些复杂的情况,如果两个字符串有不同的长度怎么办?

它完全按照您的建议执行—它跳过两个字符串中相同的字符,并按代码单位值比较第一个不同的字符。规范中的抽象关系比较算法解释了这一点(强调添加):

。如果pypx的前缀,则返回false。b.如果px是py的前缀,返回true。

c. k为最小的非负整数,使得px中位置k的字符与py中位置k的字符不同。(必须有这样的k,因为两个字符串都不是另一个字符串的前缀)

d.设mpx内位置k字符的编码单位值的整数。e.设npy中位置k字符的编码单位值的整数。f. If m ,返回true。否则返回false。

字符串按字母顺序比较,顺序如下:第一个字母,第二个字母,等等:

'ba'<'bb'

为真,因为

'ca'<'bb'

为假,因为字母c在b之后。(c> b)

这是lexicographic的比较。

从第一个字母开始,直到不匹配为止。

console.log("ca"& lt;"bb");//错误

It starts with c<b ? no. b<c? yes. -> c is 'greater' than b, therefore ca < bb -> false.

console.log("ba"& lt;"bb");//真正的

It starts with b<b ? no. b > b? no. They both equal -> continue to next letter.
a < b ? yes. Therefore -> ba < bb -> true.
WIKI