JavaScript 字符串比较——如何在 JS 中比较字符串

您可能想比较两个字符串以了解按字母顺序哪个更高或更低,或者查看它们是否相等。

您可以通过多种方式做到这一点。本文将向您展示其中的两个。

1、如何使用 localeCompare 比较字符串

您可以使用 localeCompare 方法比较当前语言环境中的两个字符串。语法如下:

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 在 world 中出现在 w 之前(w 在字母顺序上比 h 更靠后)

另一个例子:

const string1 = "banana"
const string2 = "back"

const compareValue = string1.localeCompare(string2)
// 1

上面的比较返回了 1,因为在英语语言环境中,“banana in banana” 在 “bac in back” 之后。

再举一个例子:

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”。

这种行为是不建议使用数学运算符比较字符串的原因之一,即使它有可能这样做。

因此,对于比较字符串,在可能存在的许多方法中,使用 localCompare 是一种有效的方法,因为它可以用于不同的语言。

现在您知道了一种比较字符串的简单方法。祝您编码愉快!



也可以看看