原文:JavaScript String Comparison – How to Compare Strings in JS,作者:Dillion Megida
你可能想通过比较两个字符串从而知道在字母排列顺序上谁高谁低,或者仅仅想知道它们是否相等。
你可以用很多方式来解决这个问题,我将在本文中向你展示两种方法。
1. 如何使用 localeCompare 来比较字符串
你可以使用 localeCompare
的方法来比较当前环境(locale)下的两个字符串,以下是它们的语法:
string1.localeCompare(string2)
localeCompare
返回:
- 1 如果
string1
(在字母排列顺序上)比string2
大 - -1 如果
string1
(在字母排列顺序上)比string2
小 - 0 如果
string1
和string2
在字母顺序上相等
下面是一些比较两个字符串的例子:
const string1 = "hello"
const string2 = "world"
const compareValue = string1.localeCompare(string2)
// -1
它返回了 -1
是因为在英语环境中,hello 中的 h 排在 world 中的 w 之前( w 在字母顺序中比 h 更靠后)。
另一个例子:
const string1 = "banana"
const string2 = "back"
const compareValue = string1.localeCompare(string2)
// 1
上面的比较给出了 1
,因为在英语环境中,banana的 ban 在 back 的 bac 之后。
再来一个例子:
const string1 = "fcc"
const string2 = "fcc"
const string3 = "Fcc"
const compareValue1 = string1.localeCompare(string2)
// 0
const compareValue2 = string1.localeCompare(string3)
// -1
比较 "fcc" 和 "fcc" 可以得到 0
,因为它们在顺序上是相等的。"fcc" 和 "Fcc" 的结果是 -1
,因为大写 "F" 大于小写 "f"。
在某些浏览器中,它可能会返回 -2/ 或其他一些负值,而不是 -1/。因此,不要依赖 -1 或 1,而是依赖负值(小于 0)或正值(大于 0)。
2. 如何使用数学运算符来比较字符串
在比较字符串时,你也可以使用数学运算符如大于(>)、小于(<)以及等于。
数学运算符的工作原理与 localeCompare
类似——根据字符串中字符的顺序返回结果。
使用之前的例子:
const string1 = "hello"
const string2 = "world"
console.log(string1 > string2)
// false
string1
不大于 string2
,因为 h 在 w 之前,所以是小于。
对于另一个例子而言:
const string1 = "banana"
const string2 = "back"
console.log(string1 > string2)
// true
string1
比 string2
大,因为 ban 在 back 之后。
而对于最后一个例子:
const string1 = "fcc"
const string2 = "fcc"
const string3 = "Fcc"
console.log(string1 === string2)
// true
console.log(string1 < string3)
// false
string1
等于(===
)string2
,但是 string1
不小于 string3
,这与localeCompare
相反。
用数学运算符,"fcc" 大于 "Fcc",但是用 localeCompare
,"fcc".localeCompare("Fcc")"
返回 -1
,表明 "fcc" 小于 "Fcc"。
这种处理是我不建议使用数学运算符来比较字符串的原因之一,尽管它有做到这一点的潜力。
我不推荐使用数学运算符的另一个原因是,"fcc" > "fcc"
和 "fcc" < "fcc"
是 false
,但 "fcc" 等于 "fcc"。所以如果你依赖于数学运算符,得到 false
的原因可能与你相信的不同。
所以,对于比较字符串,在可能存在的许多方法中,使用 localCompare
是一个有效的方法,因为它可以用于不同的语言。
现在你知道了一个简单的比较字符串的方法。编码愉快:)