Я хочу получить только цифры из строки.
Допустим, что это моя строка:
324ghgj123
Я хочу получить:
324123
что я пробовал:
MsgBox(Integer.Parse("324ghgj123"))
Я хочу получить только цифры из строки.
Допустим, что это моя строка:
324ghgj123
Я хочу получить:
324123
что я пробовал:
MsgBox(Integer.Parse("324ghgj123"))
попробуйте следующее:
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
вы можете использовать Regex
для этого
Imports System.Text.RegularExpressions
затем в некоторой части вашего кода
Dim x As String = "123a123&*^*&^*&^*&^ a sdsdfsdf"
MsgBox(Integer.Parse(Regex.Replace(x, "[^\d]", "")))
Или вы можете использовать тот факт, что строка является массивом символов.
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
resultString = Regex.Match(subjectString, @"\d+").Value;
предоставит вам этот номер в виде строки. После этого Int32.Parse(resultString) даст вам номер.
Фактически вы можете объединить некоторые из этих индивидуальных ответов, чтобы создать однострочное решение, которое либо вернет целое число со значением 0, либо целое число, являющееся конкатенацией всех чисел в строке. Не уверен, насколько полезен это, однако - это началось как метод для создания строки чисел только...
Dim TestMe = CInt(Val(New Text.StringBuilder((From ch In "123abc123".ToCharArray Where IsNumeric(ch)).ToArray).ToString))
Для подхода с линейным поиском вы можете использовать этот алгоритм, его в С#, но его можно легко перевести на 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);
}
Функция, которая возвращает строку без цифр
Public Function _RemoveNonDigitCharacters(S As String) As String
Return New String(S.Where(Function(x As Char) System.Char.IsDigit(x)).ToArray)
End Function
str="something1234text456"
Set RegEx = CreateObject("vbscript.regexp")
RegEx.Pattern = "[^\d+]"
RegEx.IgnoreCase = True
RegEx.Global = True
numbers=RegEx.Replace(str, "")(0)
msgbox numbers