22

我只想从字符串中获取数字。

以免说这是我的字符串:

324ghgj123

我想得到:

324123

我试过的:

MsgBox(Integer.Parse("324ghgj123"))
4

8 回答 8

39

你可以用Regex这个

Imports System.Text.RegularExpressions

然后在您的代码的某些部分

Dim x As String = "123a123&*^*&^*&^*&^   a sdsdfsdf"
MsgBox(Integer.Parse(Regex.Replace(x, "[^\d]", "")))
于 2012-11-13T05:37:38.383 回答
24

试试这个:

Dim mytext As String = "123a123"
Dim myChars() As Char = mytext.ToCharArray()
For Each ch As Char In myChars
     If Char.IsDigit(ch) Then
          MessageBox.Show(ch)
     End If
Next

或者:

Private Shared Function Num(ByVal value As String) As Integer
    Dim returnVal As String = String.Empty
    Dim collection As MatchCollection = Regex.Matches(value, "\d+")
    For Each m As Match In collection
        returnVal += m.ToString()
    Next
    Return Convert.ToInt32(returnVal)
End Function
于 2012-11-13T05:35:16.617 回答
6

或者您可以使用字符串是字符数组这一事实。

Public Function getNumeric(value As String) As String
    Dim output As StringBuilder = New StringBuilder
    For i = 0 To value.Length - 1
        If IsNumeric(value(i)) Then
            output.Append(value(i))
        End If
    Next
    Return output.ToString()
End Function
于 2012-11-13T05:43:01.147 回答
2
resultString = Regex.Match(subjectString, @"\d+").Value;

会给你那个数字作为一个字符串。Int32.Parse(resultString) 然后会给你号码。

于 2012-11-13T05:45:53.057 回答
2

实际上,您可以将其中一些单独的答案组合在一起,以创建一个单行解决方案,该解决方案将返回一个值为 0 的整数,或者一个整数,该整数是字符串中所有数字的串联。然而,不确定这有多大用处——这开始是一种只创建一串数字的方法......

    Dim TestMe = CInt(Val(New Text.StringBuilder((From ch In "123abc123".ToCharArray Where IsNumeric(ch)).ToArray).ToString))
于 2015-09-16T19:54:03.063 回答
1

返回不带数字的字符串的函数

Public Function _RemoveNonDigitCharacters(S As String) As String
        Return New String(S.Where(Function(x As Char) System.Char.IsDigit(x)).ToArray)
End Function
于 2019-06-14T13:09:20.433 回答
0

对于线性搜索方法,您可以使用此算法,它在 C# 中,但可以在 vb.net 中轻松翻译,希望对您有所帮助。

string str = “123a123”;

for(int i=0;i<str.length()-1;i++)
{
    if(int.TryParse(str[i], out nval))
        continue;
    else
        str=str.Rremove(i,i+1);
}
于 2012-11-13T05:50:59.927 回答
0
str="something1234text456"   

Set RegEx = CreateObject("vbscript.regexp")
RegEx.Pattern = "[^\d+]"
RegEx.IgnoreCase = True
RegEx.Global = True
numbers=RegEx.Replace(str, "")(0)
msgbox numbers
于 2019-07-26T15:06:13.787 回答