String.Format() - 如何使用包含格式的变量?
String.Format() - How to use a variable that contains your formatting?
在 vb.net 中,我试图将字符串格式化为格式化的 Phone 数字,其中格式是从数据库变量中读取的。
如果字符串以这种方式格式化,phone 数字如“5555555555”将被很好地格式化为“(555) 555-5555”:
String.Format("{0:(###) ###-####}", Long.Parse(PhoneNum))
但是,“(###) ###-####”字符串存储在数据库中,以维护理论系统中 phone 数字的中央格式选择。
有谁知道如何用变量替换这种硬编码格式?我正在尝试类似的东西:
Dim phoneFormat as String = <~read in the String format from DB~>
String.Format("{0:" & phoneFormat.ToString & "}", Long.Parse(PhoneNum)))
然而不幸的是,这只是 returns 字符串本身。我看到“(###) ###-####”。
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()
否则格式中的 #
将不知道要操作什么。
在 vb.net 中,我试图将字符串格式化为格式化的 Phone 数字,其中格式是从数据库变量中读取的。
如果字符串以这种方式格式化,phone 数字如“5555555555”将被很好地格式化为“(555) 555-5555”:
String.Format("{0:(###) ###-####}", Long.Parse(PhoneNum))
但是,“(###) ###-####”字符串存储在数据库中,以维护理论系统中 phone 数字的中央格式选择。
有谁知道如何用变量替换这种硬编码格式?我正在尝试类似的东西:
Dim phoneFormat as String = <~read in the String format from DB~>
String.Format("{0:" & phoneFormat.ToString & "}", Long.Parse(PhoneNum)))
然而不幸的是,这只是 returns 字符串本身。我看到“(###) ###-####”。
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()
否则格式中的 #
将不知道要操作什么。