我想只从字符串中获取数字。
不要说这是我的字符串:
324ghgj123
我想得到:
324123
我的尝试:
MsgBox(Integer.Parse("324ghgj123"))
答案 0 :(得分:28)
您可以将Regex
用于此
Imports System.Text.RegularExpressions
然后在代码的某些部分
Dim x As String = "123a123&*^*&^*&^*&^ a sdsdfsdf"
MsgBox(Integer.Parse(Regex.Replace(x, "[^\d]", "")))
答案 1 :(得分:19)
试试这个:
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
答案 2 :(得分:5)
或者您可以使用String是Chars数组的事实。
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
答案 3 :(得分:2)
resultString = Regex.Match(subjectString, @"\d+").Value;
会将该数字作为字符串给出。然后Int32.Parse(resultString)将为您提供数字。
答案 4 :(得分:1)
您实际上可以将这些单独的答案中的一些组合起来创建单行解决方案,该解决方案将返回值为0的整数,或者是字符串中所有数字的串联的整数。然而,不确定它是多么有用 - 这开始只是一种创建数字串的方法....
k
答案 5 :(得分: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);
}
答案 6 :(得分:0)
返回无数字字符串的函数
Public Function _RemoveNonDigitCharacters(S As String) As String
Return New String(S.Where(Function(x As Char) System.Char.IsDigit(x)).ToArray)
End Function
答案 7 :(得分:0)
str="something1234text456"
Set RegEx = CreateObject("vbscript.regexp")
RegEx.Pattern = "[^\d+]"
RegEx.IgnoreCase = True
RegEx.Global = True
numbers=RegEx.Replace(str, "")(0)
msgbox numbers