2

我正在寻找一种更好的方法来更好地实现以下内容:

我已经导入 import java.text.MessageFormat 来设置我想要的格式。

  1. val szphoneFrmt 包含我想要的格式。
  2. val szInitialString 设置为我从数据库中提取的值。
  3. val szWorkString 通过子字符串分解字符串。
  4. val szWorkPhone 是带有格式化字符串的最后一个字符串。

现在我看到的问题是有时数据库中的值为空,因此 szInitialString 为空,所以我进行了检查以防止越界异常。现在这段代码正在工作,我可以正确格式化字符串,但我认为这不是一个好的解决方案。

有人对整理这段代码有什么建议吗?我完全可以放弃使用 Java 的 MessageFormat,但我还没有看到任何其他合理的解决方案。

  val szphoneFrmt = new MessageFormat("1 {0}{1}-{2}")  
  val szInitialString = applicant.ApplicantContact.Phone1.toString
  val szWorkString = { 
      if (szInitialString != null) {
          Array(szInitialString.substring(0,3), 
                szInitialString.substring(3,6), 
                szInitialString.substring(6))
      } else { null } 
  }

  val szWorkPhone = phoneFrmt.format(szWorkString)
4

1 回答 1

0

由于我们不喜欢空值,我将您可能为空的值包装到一个选项中。如果选项有一个值,我会从中创建数组,然后将其传递给格式化程序。如果它没有值,我给它值“”。

val szPhoneFrmt = new MessageFormat("1 {0}{1}-{2}")  
val szInitialString = Option(applicant.ApplicantContact.Phone1.toString)
val szWorkString = szInitialString
    .map { s => Array(s.substring(0,3), s.substring(3,6), s.substring(6)) }
    .map(szPhoneFrmt.format)
    .getOrElse("")
于 2015-06-16T13:57:16.727 回答