我想知道如何創建格式為 123ABC1 的順序字串。所以第一條記錄將是 000AAA0 到 999AAA0 然后是 000AAA1 一直到 999AAA9。接下來它將是 000AAB0 等等。這可能嗎?謝謝
uj5u.com熱心網友回復:
看看這個例子:
Private Function NextSequence(Optional existingSequence As String = "") As String
' beginning record
If (String.IsNullOrWhiteSpace(existingSequence)) Then
Return "000AAA0"
End If
' invalid existing sequence length
If (existingSequence.Length <> 7) Then
Throw New ArgumentException("existingSequence is not in a valid format, it is not 7 characters long")
End If
' part 1
Dim part1String As String = existingSequence.Substring(0, 3)
Dim part1Integer As Integer
If (Not Integer.TryParse(part1String, part1Integer)) Then
Throw New ArgumentException("existingSequence is not in a valid format, it does not start with a 3 digit number")
End If
' part 2
Dim part2String As String = existingSequence.Substring(3, 3)
If (Not Char.IsLetter(part2String(0)) OrElse Not Char.IsLetter(part2String(1)) OrElse Not Char.IsLetter(part2String(2))) Then
Throw New ArgumentException("existingSequence is not in a valid format, the middle part is not 3 sequential letters")
End If
' part 3
Dim part3String As String = existingSequence.Substring(6)
Dim part3Integer As Integer
If (Not Integer.TryParse(part3String, part3Integer)) Then
Throw New ArgumentException("existingSequence is not in a valid format, it does not end with a 1 digit number")
End If
' get the alpha characters
Dim alphabet() As Char = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray()
existingSequence = existingSequence.ToUpper()
' increment the sequence
part3Integer = 1
If (part3Integer = 10) Then
part3Integer = 0
End If
Dim shouldIncrease As Boolean = part3Integer = 0
If (shouldIncrease) Then
Dim nextCharacterIndex As Integer = Array.IndexOf(alphabet, part2String(2)) 1
shouldIncrease = nextCharacterIndex = alphabet.Length
If (shouldIncrease) Then
nextCharacterIndex = 0
End If
part2String = new String({part2String(0), part2String(1), alphabet(nextCharacterIndex)})
End If
If (shouldIncrease) Then
Dim nextCharacterIndex As Integer = Array.IndexOf(alphabet, part2String(1)) 1
shouldIncrease = nextCharacterIndex = alphabet.Length
If (shouldIncrease) Then
nextCharacterIndex = 0
End If
part2String = new String({part2String(0), alphabet(nextCharacterIndex), part2String(2)})
End If
If (shouldIncrease) Then
Dim nextCharacterIndex As Integer = Array.IndexOf(alphabet, part2String(0)) 1
shouldIncrease = nextCharacterIndex = alphabet.Length
If (shouldIncrease) Then
nextCharacterIndex = 0
End If
part2String = new String({alphabet(nextCharacterIndex), part2String(1), part2String(2)})
End If
If (shouldIncrease) Then
part1Integer = 1
If (part1Integer > 999) Then
Throw New ArgumentOutOfRangeException("existingSequence")
End If
End If
Return part1Integer.ToString("D3") & part2String & part3Integer.ToString("D1")
End Function
小提琴:https : //dotnetfiddle.net/8DyrUG
這樣做是將傳入序列分為三個部分:
- 第一部分是前三位數字
- 第二部分是中間三個字母
- 第三部分是最后一位數字
對于第三部分,它將數字值增加 1。如果達到 10,則將其重置為 0 并指示第二部分應該更新。
對于第二部分,嘗試增加來自 AZ 的每個字母,如果一個字母更新為“Z”,則之前的字母隨后會更新。
對于第一部分,如果中間字母的第一個字母被更新,那么它會增加整數。
如果達到 1000AAA9,則拋出例外(表示序列結束)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/341380.html
標籤:网络
上一篇:每秒在VB控制臺中重復相同的操作
