在vb.net中使用Like可以使用一系列负数和正数进行模式匹配吗
我有一个用户输入的字符串:在vb.net中使用Like可以使用一系列负数和正数进行模式匹配吗,vb.net,pattern-matching,Vb.net,Pattern Matching,我有一个用户输入的字符串: "{0.3064, 15.6497, 60.7668, 52.1362, 76.6645, 97, -15.8315, -6.8806, 5.547, -2.3381, -23.9905, 40.4569, 60.1592, 27.1418, 42.9375, -22.8297, -11.7423, -17.1576, -33.9918, 7.0585}" 我希望能够根据开头有一个“{”,结尾有一个“}”,逗号之间有20个逗号分隔的数字,介于-
"{0.3064, 15.6497, 60.7668, 52.1362, 76.6645, 97, -15.8315, -6.8806, 5.547, -2.3381, -23.9905, 40.4569, 60.1592, 27.1418, 42.9375, -22.8297, -11.7423, -17.1576, -33.9918, 7.0585}"
我希望能够根据开头有一个“{”,结尾有一个“}”,逗号之间有20个逗号分隔的数字,介于-1000和1000之间,来验证它
我尝试过使用下面的like操作符,但没有成功。无论与模式是否匹配,一切都返回False。如何基于此模式进行验证
这就是我尝试过的:
ArrayOk = ArrayValues1txt.Text Like "{[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000],[(1000)-1000]}"
If ArrayOk = False Then
MsgBox("Wrong array pattern! Pattern must contain 20 elements and be in the form {#,#}",
MessageBoxButtons.OK, "Bad Array Entered")
GoTo Canceller
Else
End If
您可以使用正则表达式来验证的一般模式:是否有20个十进制值,它们之间用括号中的逗号分隔
Dim pattern=“^{((-\d+(\.\d+)),\s?{19}(-\d+(\.\d+))}$”
Dim input=“{0.3064、15.6497、60.7668、52.1362、76.6645、97、-15.8315、-6.8806、5.547、-2.3381、-23.9905、40.4569、60.1592、27.1418、42.9375、-22.8297、-11.7423、-17.1576、-33.9918、7.0585}”
如果(Regex.IsMatch(输入,模式))那么
如果结束
验证其是否与特定模式匹配后,可以通过执行以下操作验证数字是否与数字范围验证匹配:
Dim pattern=“^{((-\d+(\.\d+)),\s?{19}(-\d+(\.\d+))}$”
Dim input=“{0.3064、15.6497、60.7668、52.1362、76.6645、97、-15.8315、-6.8806、5.547、-2.3381、-23.9905、40.4569、60.1592、27.1418、42.9375、-22.8297、-11.7423、-17.1576、-33.9918、7.0585}”
如果(Regex.IsMatch(输入,模式))那么
input=input.Replace(“{”,String.Empty)。Replace(“}”,String.Empty)
尺寸项目=输入。拆分(“,”)
Dim convertedItems=items.Select(函数(项)Convert.ToDouble(项.Trim()).ToArray()
If(convertedItems.All)(Function(item)item>=-1000和also item我使用String.StartsWith
和String.EndsWith
来测试大括号。接下来,我用子字符串
将它们切掉。然后用逗号分割字符串。我检查是否正好有20个元素
如果我们走到这一步,我循环遍历每个元素。修剪掉任何前导或尾随空格并将其更改为双精度。然后我可以进行数字比较
Private Function ValidateArray(input As String) As Boolean
If Not input.StartsWith("{") OrElse Not input.EndsWith("}") Then
Return False
End If
input = input.Substring(1, input.Length - 2)
Dim splits = input.Split(","c)
If splits.Length <> 20 Then
Return False
End If
For Each n In splits
Dim dbl = CDbl(n.Trim)
If dbl > 1000 OrElse dbl < -1000 Then
Return False
End If
Next
Return True
End Function
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim IsValid = ValidateArray("{0.3064, 15.6497, 60.7668, 52.1362, 76.6645, 97, -15.8315, -6.8806, 5.547, -2.3381, -23.9905, 40.4569, 60.1592, 27.1418, 42.9375, -22.8297, -11.7423, -17.1576, -33.9918, 7.0585}")
MessageBox.Show(IsValid.ToString)
End Sub