Scala if 字符串的条件给出不同的结果



vc100_60大于vc75_60

如何在 scala 代码中实现它

 scala> val str1 ="vc100_60"
 str1: String = vc100_60
 scala> val str2 ="vc75_60"
 str2: String = vc75_60
 scala> val result = if(str1 > str2) { println(str1) } else {println(str2)}
 vc75_60

预期答案是vc100_60 但我得到vc75_60

需要执行哪些代码更改才能从 if 条件中获得vc100_60

有很多方法可以将这些字符串解析为您感兴趣的整数值进行比较 - 下面是使用正则表达式的方法:

val regex = """vc(d+)_.*""".r
def parse(str: String): Int = str match {
  case regex(v) => v.toInt
  case _ => 0 // when parsing fails; Alternatively - throw exception or use a different default value
}
if (parse(str1) > parse(str2)) { println(str1) } else { println(str2) }
// or, another way to print the minimum 
// which can easily be applied to more than two strings:
val min = List(str1, str2).minBy(parse)
println(min)

当然,我根据这两个示例对格式做了一些假设,如有必要,请修复正则表达式。

这是一个词典比较。它们在位置上进行比较。在这种情况下,"99"将大于 "1000",因为第一个字符在 "99" 中更大。每当一个角色变得伟大时,其他角色就不会被比较。

最新更新