我对正则表达式很陌生,但就我一直在Google上游荡而言,我唯一能解决问题的方法就是使用正则表达式。
我有一组字符串,其中包含以下模式:
“3 - 橘子,柠檬”
“4 - 菠萝,橙子”
“12 - Lime,草莓”
我目前的代码是:
Private Sub cmbKelas_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbKelas.SelectedIndexChanged
LblID.Text = cmbKelas.Text
End Sub
它给整个字符串输出..我想要的是cmbKelas.Text将其值剥离,因此每个字符串将变为:
“3”
“4”
“12”
只有前几个数字。评论,建议或指向正确的链接/文章会有所帮助,因为到目前为止,我无法找到一个容易理解的体面教程。
答案 0 :(得分:4)
正则表达式对此任务来说太过分了。
您可以使用IndexOf
method找出第一个空格出现的位置,然后使用Substring
method将字符串的开头提升到第一个空格的索引。
Dim values As String() = New String() { _
"3 - Orange, Lemon", _
"4 - Pineapple, Orange", _
"12 - Lime, Strawberry" _
}
For Each input as String In values
Dim number As String = input.Substring(0, input.IndexOf(" "))
Console.WriteLine(number)
Next
或者,您可以使用Split
method拆分空格并获取拆分结果数组中的第一项,如下所示:
For Each input as String In values
Dim split As String() = input.Split(" "c)
Dim number As String = split(0)
Console.WriteLine(number)
Next
答案 1 :(得分:1)
Dim numbers = new List(Of String)()
For Each input as String In values
Dim parts = input.Split(New Char() {" "c})
If (parts.Length > 0) Then
numbers.Add(parts[0])
End If
Next
答案 2 :(得分:1)
如果您想使用正则表达式执行此操作,可以使用以下内容:
Dim ResultString As String
ResultString = Regex.Match(SubjectString, "^\d+").Value
其中SubjectString是您要搜索的字符串。
解释(因为你是regex的新手):
^
表示字符串的开头(表示您不匹配的原因)
数字不在开头)\d
表示数字0-9
(它是[0-9]的缩写形式,也可以这样做)+
表示
+
之前的字符至少匹配一次。这样你就会在字符串的开头匹配1到无限数字。