Подтвердить что ты не робот

Получить только числа из строки

Я хочу получить только цифры из строки.

Допустим, что это моя строка:

324ghgj123

Я хочу получить:

324123

что я пробовал:

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

Ответ 1

попробуйте следующее:

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

вы можете использовать Regex для этого

Imports System.Text.RegularExpressions

затем в некоторой части вашего кода

Dim x As String = "123a123&*^*&^*&^*&^   a sdsdfsdf"
MsgBox(Integer.Parse(Regex.Replace(x, "[^\d]", "")))

Ответ 3

Или вы можете использовать тот факт, что строка является массивом символов.

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

Ответ 4

resultString = Regex.Match(subjectString, @"\d+").Value;

предоставит вам этот номер в виде строки. После этого Int32.Parse(resultString) даст вам номер.

Ответ 5

Фактически вы можете объединить некоторые из этих индивидуальных ответов, чтобы создать однострочное решение, которое либо вернет целое число со значением 0, либо целое число, являющееся конкатенацией всех чисел в строке. Не уверен, насколько полезен это, однако - это началось как метод для создания строки чисел только...

    Dim TestMe = CInt(Val(New Text.StringBuilder((From ch In "123abc123".ToCharArray Where IsNumeric(ch)).ToArray).ToString))

Ответ 6

Для подхода с линейным поиском вы можете использовать этот алгоритм, его в С#, но его можно легко перевести на 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);
}

Ответ 7

Функция, которая возвращает строку без цифр

Public Function _RemoveNonDigitCharacters(S As String) As String
        Return New String(S.Where(Function(x As Char) System.Char.IsDigit(x)).ToArray)
End Function

Ответ 8

str="something1234text456"   

Set RegEx = CreateObject("vbscript.regexp")
RegEx.Pattern = "[^\d+]"
RegEx.IgnoreCase = True
RegEx.Global = True
numbers=RegEx.Replace(str, "")(0)
msgbox numbers