需要使用VB,使用Visual Studio 2019的Windows应用程序在值前附加零

问题描述

在迭代中,我需要在迭代器之前附加零。如果迭代器的值小于10,则需要“ 00”,如果大于或等于10,则需要添加“ 0”。我尝试了几种可能性,但“ J”的值未用零更新。请帮助进行操作。

如果我在手表中添加了此表达式并检查了显示为“ 000”的值,但变量J不会使用该值进行更新以进行进一步的验证。

*******

Dim int_DoubleZero As Integer = "00"
Dim int_SingleZero As Integer = "0"
Dim J As Integer

xl_LastUsed_Row = xlSH.UsedRange.Rows.Count
xl_LastUsed_Column = xlSH.UsedRange.Columns.Coun

For J = 0 To xl_LastUsed_Column
    If J < 10 Then
       J = CStr(int_DoubleZero) + Cstr(J)
    ElseIf J = 10 And J < 100 Then
        Format(J,"00")
       J = CStr(int_SingleZero) + Cstr(J)
    End If
Next

解决方法

您要串联一个String,然后在分配给J时将其转换回整数。这会去除字符串中的前导零。您需要一个String变量来保留新值。

Dim int_DoubleZero As Integer = "00"
Dim int_SingleZero As Integer = "0"
Dim J As Integer
Dim k as String

xl_LastUsed_Row = xlSH.UsedRange.Rows.Count
xl_LastUsed_Column = xlSH.UsedRange.Columns.Count

For J = 0 To xl_LastUsed_Column
    If J < 10 Then
       k = CStr(int_DoubleZero) + Cstr(J)
    ElseIf J = 10 And J < 100 Then
       k = CStr(int_SingleZero) + Cstr(J)
    End If
Next

操纵循环迭代器通常是一种不好的做法,因为它可能会导致意外的问题。 J也将作为循环的最后迭代结束。

,

假定您将Numeric数据用作String,否则将数字001设为1或0001.5设为1.5则没有意义。因此,对于数字的字符串表示形式,您可以使用:

.Padleft(length,Char)

示例:

For i As Integer = 0 To 111
    Console.WriteLine(i.ToString.PadLeft(3,CChar("0")))
Next

' here are also decimals inside 
Console.WriteLine(CStr(1.25.ToString("N2")).PadLeft(6,CChar("0")))

或者您可以使用如下所示的直接格式字符串:

'for Integers
.ToString("000")

For i As Integer = 0 To 111
    Console.WriteLine(i.ToString("000"))
Next

'for Decimals 
.ToString("000.00")

For i As Integer = 0 To 111
    Console.WriteLine((i + (0.7)).ToString("000.00"))
Next