我有一个字母数字字符串,如sdff45hg589>@#DF456&<jk778P&&FHJ75,我只想提取数字,而不使用regex或任何其他函数。
Dim input As String = "sdff45hg589>@#DF456&<jk778P&&FHJ75"
Dim output As String = New String((From c As Char In input Select c Where Char.IsDigit(c)).ToArray())
MsgBox(output) 'Display the output 消息框将显示4558945677875。
为了从同一个字符串中提取字母,我使用以下方法:
Dim input As String = "sdff45hg589>@#DF456&<jk778P&&FHJ75"
Dim output As String = New String((From c As Char In input Select c Where Char.IsLetter(c)).ToArray())
MsgBox (output)这是提取两者的更好的方法吗?
发布于 2014-08-08 15:03:34
如果您想同时提取这两个字符(我不知道这是否是一个要求,问题中不清楚),您应该迭代每个字符一次,将它们放在不同的列表中。
Dim input As String = "sdff45hg589>@#DF456&<jk778P&&FHJ75"
Dim characters As List(Of Char) = New List(Of Char)()
Dim numbers As List(Of Char) = New List(Of Char)()
For Each c As Char In input
If (Char.IsNumber(c)) Then
numbers.Add(c)
ElseIf (Char.IsLetter(c)) Then
characters.Add(c)
End If
Next
'Do whatever you have to do here正如@mjolka所指出的,由于用户的目标是显示分裂的数字和字母,所以使用StringBuilder更合适。这是我最新的答复:
Dim input As String = "sdff45hg589>@#DF456&<jk778P&&FHJ75"
Dim characters As StringBuilder = New StringBuilder()
Dim numbers As StringBuilder = New StringBuilder()
For Each c As Char In input
If (Char.IsNumber(c)) Then
numbers.Append(c)
ElseIf (Char.IsLetter(c)) Then
characters.Append(c)
End If
Next
'Do whatever you have to do here发布于 2014-08-08 08:59:41
您可以通过一个非常简单的regex替换来完成这一任务。
Dim match = Regex.Replace("sdff45hg589>@#DF456&<jk778P&&FHJ75", "\D", "")非数字为"\D",然后将其替换为空字符串。
我找了上面的数据
https://codereview.stackexchange.com/questions/59488
复制相似问题