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答案 0 :(得分:0)
这是一个词典比较。他们比较明确。在这种情况下,"99"
将大于"1000"
,因为"99"
中的第一个字符更大。每当一个角色变得伟大,其他角色就不会被比较。
答案 1 :(得分:0)
有很多方法可以将这些字符串解析为您感兴趣的Integer值以进行比较 - 这里使用正则表达式:
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)
当然,我根据这两个例子对格式做了一些假设,必要时修复了正则表达式。