vb.net 格式数字转字符串

Posted

技术标签:

【中文标题】vb.net 格式数字转字符串【英文标题】:Vb.net format number to String 【发布时间】:2015-03-13 07:46:54 【问题描述】:

在 Visual Basic .NET 中,我有一个整数值:

Dim myNum as Integer = 123

如何将其转换为字符串为“0123”(有 4 个数字)?

【问题讨论】:

C# convert int to string with padding zeros?的可能重复 文字与示例冲突。 0123只有4个字符,但你说要5个。你能澄清一下吗? @Eric 我确定这是重复的。某处必须有另一个VB.Net数字格式问题(我现在懒得搜索它)。但这不是链接问题的重复。虽然它们非常相似,甚至使用相同的 .Net API,但我们很少会针对 C# 副本关闭 VB 问题。 【参考方案1】:

从您的问题中不清楚您需要 4 个字符还是 5 个字符。以下是 5 个字符的方法。如果您需要 4 个字符,只需在格式字符串中删除一个零。

Dim myNum as Integer = 123
Dim myNumString As String = myNum.ToString("00000")

您也可以使用String.Format()

Dim myNumString As String = String.Format("0:00000", myNum)

现在是字符串插值:

Dim myNumString As String = $"myNum:00000"

重要提示:请记住,一旦您执行此操作,值就不再是数字。它变成了 text,这意味着如果您尝试进行排序或算术等操作,它将表现为文本。

【讨论】:

【参考方案2】:

至于将整数转换为字符串,尝试简单地使用如下设置:

Dim myNum as Integer = 123;
Dim stringValue as String;
stringValue = CStr(myNum);

如果您需要为此添加前导零,您可以手动在它们后面附加一个字符串,或者您可以尝试编写一个类似于以下内容的宏:

If (myNum - (10 * (myNum / 10))) = 5 Then
     stringValue = CStr(myNum)
ElseIf (myNum - (10 * (myNum / 10))) = 4 Then
     stringValue = "0" & CStr(myNum)
ElseIf (myNum - (10 * (myNum / 10))) = 3 Then
     stringValue = "00" & CStr(myNum)
ElseIf (myNum - (10 * (myNum / 10))) = 2 Then
     stringValue = "000" & CStr(myNum)
ElseIf (myNum - (10 * (myNum / 10))) = 1 Then
     stringValue = "0000" & CStr(myNum)
Else
     stringValue = "00000"

(myNum - (10 * (myNum / 10))) 是有效的模数数学。信用:VBA equivalent to Excel's mod function

我没有测试这段代码,所以如果它不能开箱即用,我深表歉意,但总体思路如上所述。上面也假设了 123 或 1234 等数字。您还可以尝试操作字符串并通过测试新转换字符串的长度来组合它们。

Dim newString as String
If Len(stringValue) = 3 Then
    newString = "00" & stringValue
ElseIf Len(stringValue) = 2 Then
    newString = "000" & stringValue

等等

【讨论】:

方式过于复杂。这是单线。 很好的反馈。总是乐于学习更简单的做事方法。我是 VBA 菜鸟,所以很高兴看到更有效的想法。 这不是 VBA。 VB.Net 是一种非常不同的动物。 这更有意义。谢谢!【参考方案3】:

这是一种非常简单的方法,可以将数字转换为字符串,如果数字长度小于 5 位,则添加前导零

Dim myNum as Integer = 123
Dim strNum as String 

strNum = String(5-len(myNum),"0") & cstr(myNum)

debug.print strNum   'This will display 00123

【讨论】:

还有更简单的方法:myNum.ToString("00000") 谢谢乔尔,但问题是针对 VBA 而不是 VB 或 VB.Net。 ToString 方法在 VBA 中不可用 你确定吗?因为它被标记为 VB.Net,并且修订历史不会将 VBA 显示为问题的一部分。如果你是对的,我们需要,我们需要修复标签。【参考方案4】:

试试 Tostring() 格式。

myNum.ToString("00000")

【讨论】:

这个答案似乎没有为乔尔的答案添加任何内容。另外,请避免仅使用代码的答案。添加一些关于为什么或如何工作的上下文。

以上是关于vb.net 格式数字转字符串的主要内容,如果未能解决你的问题,请参考以下文章

字符串格式化:数字转成英文格式

excel 如何把数字自动转成字符串?

数字字符串转千分位数字字符串

vb.net如何运算一个字符串

java中怎么把一个字符串中的数字抽出来转化成日期格式

将数组中的字符串转数字