Scala:将字符串格式化为 PhoneNumber 并使用 Java 的 MessageFormat 的更好方法
Scala: Better way for String Formatting to PhoneNumber and using Java's MessageFormat
我正在寻找更好的方法来更好地实现以下内容:
我已经导入 import java.text.MessageFormat 来设置我想要的格式。
- val szphoneFrmt 包含我想要的格式。
- val szInitialString 设置为我从数据库中提取的值。
- val szWorkString 通过子字符串分解字符串。
- 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)
由于我们不喜欢空值,所以我将您可能为空的值包装到一个选项中。如果选项有一个值,我从它创建数组,然后将它传递给格式化程序。如果它没有值,我给它值“”。
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("")
我正在寻找更好的方法来更好地实现以下内容:
我已经导入 import java.text.MessageFormat 来设置我想要的格式。
- val szphoneFrmt 包含我想要的格式。
- val szInitialString 设置为我从数据库中提取的值。
- val szWorkString 通过子字符串分解字符串。
- 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)
由于我们不喜欢空值,所以我将您可能为空的值包装到一个选项中。如果选项有一个值,我从它创建数组,然后将它传递给格式化程序。如果它没有值,我给它值“”。
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("")