"a" res14: Boolean-6ren">
gpt4 book ai didi

string - 使用 > 和 < 比较 Scala 中的两个字符串

转载 作者:行者123 更新时间:2023-12-04 12:47:18 27 4
gpt4 key购买 nike

我正在尝试比较 Scala 中的两个字符串,试图找出哪个在字母表中排在第一位。 IE。 ab 之前,aababb 之前,等等。

好像><运营商正在做的正是这项工作:

scala> "b" > "a"

res14: Boolean = true

scala> "b" < "a"

res15: Boolean = false

scala> "aab" < "abb"

res16: Boolean = true

然而,doc没有告诉我这到底是做什么的,而且在线教程似乎都没有使用这种方法来比较字符串。因此,我想知道:

  • 这是执行我想执行的操作的故障安全方法,即比较两个字符串的字母顺序吗?

  • Scala 中是否有我在这里缺少的更常见的方法?

  • 它究竟是如何工作的 - 例如

scala> "?" > "!" res25: Boolean = true

对我来说不直观。

最佳答案

正如您在文档中看到的,您可以使用定义的 > (以及所有其他)String秒。最终,这分解了 String 的元素进入底层Char s,它们是 unicode。因此,您需要比较它们的 unicode 值以模拟 scalac 所展示的逻辑。

指的是明确的 list有人发现

U+0021 ! ! Exclamation mark

U+003F ? ? Question mark

所以,确实,!<?true .

我相信比较操作对于您可以提供的任何 unicode 序列都是故障安全的。见偶:

val string1 = "\u2200"
val string2 = "\uFB30"

string1 < string2

val string3 = string1 + string2
val string4 = string2 + string1

string3 < string4
string4 < string3

string3 == string1 + string2
string4 == string1 + string2

在我的工作表中给出了:

string1: String = ∀
string2: String = אּ // note: aleph comes after All in the unicode definition.

res7: Boolean = true

string3: String = ∀אּ
string4: String = אּ∀

res8: Boolean = true
res9: Boolean = false

res10: Boolean = true
res11: Boolean = false

关于string - 使用 > 和 < 比较 Scala 中的两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43645223/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com