String.Format() - 如何使用包含格式的变量



在 vb.net 中,我正在尝试将字符串格式化为格式化的电话号码,其中格式是从数据库变量中读入的。

如果字符串以这种方式格式化,则像"5555555555"这样的电话号码将很好地格式化为"(555( 555-5555":

String.Format("{0:(###) ###-####}", Long.Parse(PhoneNum))

但是,"(###( ###-####"字符串存储在数据库中,以维护理论系统中电话号码的集中格式选择。

有谁知道如何用变量替换这种硬编码格式? 我正在尝试类似的东西:

Dim phoneFormat as String = <~read in the String format from DB~>
String.Format("{0:" & phoneFormat.ToString & "}", Long.Parse(PhoneNum)))

但不幸的是,这只返回字符串本身。 我看到"(###( ###-####"。

Object.ToString可能

更简单,但您仍然可以使用 String.Format 。这是这两种方法

Dim phoneNum = "1234567890"
Dim phoneFormat = "(###) ###-####"
' simpler version using Long.ToString
Dim formattedPhoneNumber1 = Long.Parse(phoneNum).ToString(phoneFormat)
' your original attempt using String.Format
Dim formattedPhoneNumber2 = String.Format("{0:" & phoneFormat & "}", Long.Parse(phoneNum))
' cleaner version using String.Format with traditional interpolation and $ interpolation
Dim formattedPhoneNumber3 = String.Format($"{{0:{phoneFormat}}}", CLng(phoneNum))
Console.WriteLine(formattedPhoneNumber1)
Console.WriteLine(formattedPhoneNumber2)
Console.WriteLine(formattedPhoneNumber3)
Console.ReadLine()

(123( 456-7890
(123( 456-7890
(123( 456-7890

我认为您可能没有将 Long 发送到函数中,而是将字符串发送到函数中(顺便问一下,为什么数字5555555555首先存储为字符串?您需要包含Long.Parse()否则格式中的#将不知道要操作什么。

相关内容

  • 没有找到相关文章

最新更新