首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从AlphaNumeric字符串中提取数字

从AlphaNumeric字符串中提取数字
EN

Code Review用户
提问于 2014-08-08 08:51:52
回答 2查看 23.7K关注 0票数 3

我有一个字母数字字符串,如sdff45hg589>@#DF456&<jk778P&&FHJ75,我只想提取数字,而不使用regex或任何其他函数。

代码语言:javascript
复制
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

为了从同一个字符串中提取字母,我使用以下方法:

代码语言:javascript
复制
 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)

这是提取两者的更好的方法吗?

EN

回答 2

Code Review用户

回答已采纳

发布于 2014-08-08 15:03:34

如果您想同时提取这两个字符(我不知道这是否是一个要求,问题中不清楚),您应该迭代每个字符一次,将它们放在不同的列表中。

代码语言:javascript
复制
  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更合适。这是我最新的答复:

代码语言:javascript
复制
  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
票数 3
EN

Code Review用户

发布于 2014-08-08 08:59:41

您可以通过一个非常简单的regex替换来完成这一任务。

代码语言:javascript
复制
Dim match = Regex.Replace("sdff45hg589>@#DF456&<jk778P&&FHJ75", "\D", "")

非数字为"\D",然后将其替换为空字符串。

我找了上面的数据

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/59488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档