Получить только числа из строки
Я хочу получить только цифры из строки.
Допустим, что это моя строка:
324ghgj123
Я хочу получить:
324123
что я пробовал:
MsgBox(Integer.Parse("324ghgj123"))
Ответы
Ответ 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