0

私は vb.net を初めて使用し、検索しましたが、vb.net に関するものを見つけることができません。

「9999」に達するまで「0000」をインクリメントし、目的の出力が得られるまでループしたかったのです。

私の計画はこれでした:

if number = "0000" then 'result end if
if number = "0001" then 'result end if

しかし、非常に時間がかかります。それを行うためのはるかに優れた、より短い方法があることを私は知っています。誰かが私を助けることができますか?

4

2 に答える 2

5

整数(0から始まる)として保持するだけで、インクリメントできます。次に、次を使用してその整数をフォーマットします。

Dim text = counter.ToString("0000")

9999 を 0000 にループさせるには、次のコードを使用してカウンターをインクリメントします。

counter = (counter + 1) Mod 10000

編集: 9999 か​​ら 0000 にループバックせずにカウントしたいだけの場合は、ループを使用できますFor。例えば...

For counter = 0 To 9999
    Console.WriteLine(counter.ToString("0000"))
Next
于 2013-02-14T06:50:16.563 に答える
1

役に立ちEnumerable.Rangeますか?http://msdn.microsoft.com/en-au/library/system.linq.enumerable.range.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

  ' Generate a sequence of integers from 1 to 9999  
    Dim numbers = Enumerable.Range(1, 9999)

    For Each num As Integer In numbers
        Console.WriteLine(num)
        ' or use this like Jon num.ToString("0000")
    Next 

つまり、作成したコードの後で数値のリストを調べたい場合を除き、これはそれほど便利ではないかもしれません。単純な for ループでない場合は十分です。

必要な形式で数値のリストを生成することもできます。

Dim numbers = Enumerable.Range(1, 9999).Select(Function(x) x= x.ToString("0000"))

For Each num As String In numbers
    If num = "0500" Then
       ' Do something
    End If
Next 

編集:要求どおり

Public Function IsValidNumber(Byval input As String) As Boolean ' Yes/No

  Dim numbers= Enumerable.Range(1, 9999).Select(Function(x) x= x.ToString("0000"))

  Return numbers.Contains(input)
  ' Which is the same as below
  'For Each num As String In numbers
  '    If num = input Then
  '      Return True
  '    End If
  'Next 

  'Return False

End Function

' Usage
Dim isCorrect1 = IsValidNumber("0567") ' Will return True or Yes
Dim isCorrect2 = IsValidNumber("10500") ' Will return False or No
于 2013-02-14T07:02:29.733 に答える