在scala中把字符串转换为大写字母 [关闭]。

问题描述 投票:0回答:1
class Student(firstName: String, lastName: String, rollNum: String)

需要将firstName和lastName转换为大写。在设计上,当我们将这些值赋给

val st1 = Student(
                  firstName = firstName.toUpperCase, 
                  lastName = lastName.toUpperCase, 
                  rollNum = rollNum
          )

case class UpperCaseStr(rawValue: String) {
   def value: String = rawValue.toUpperCase
}

val st1 = Student(
                  firstName = UpperCaseStr(firstName), 
                  lastName = UpperCaseStr(lastName), 
                  rollNum = rollNum
          )
string scala uppercase
1个回答
2
投票

如果你的域需要强制执行一些名字的规则,我会创建一个智能构造函数。

case class Name private (val value: String) {
  def copy(value: String = this.value) = Name(value)
}
object Name {
  def apply(value: String) = new Name(value.toUpperCase)
}

并用它来代替 String

case class Student(firstName: Name, lastName: Name, rollNum: String)

如果只是一次的事情,不会服务于领域建模的正确性,我就会用一个助手,将调用的 .toUpperCase 就像 @Markus Appel 建议的那样。


0
投票

你应该让 Student a case class,否则将无法使用。

然后,结合使用 .copy.toUpperCase:

case class Student(firstName: String, lastName: String, rollNum: String)

def upperCaseStudent(s: Student): Student = s.copy(
  firstName = s.firstName.toUpperCase,
  lastName = s.lastName.toUpperCase
)
© www.soinside.com 2019 - 2024. All rights reserved.