je veux obtenir seulement des nombres de la chaîne.
De peur de dire que c'est ma chaîne:
324ghgj123
je veux obtenir:
324123
ce que j'ai essayé:
MsgBox(Integer.Parse("324ghgj123"))
essaye ça:
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
ou:
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
vous pouvez utiliser Regex
pour cela
Imports System.Text.RegularExpressions
puis sur une partie de votre code
Dim x As String = "123a123&*^*&^*&^*&^ a sdsdfsdf"
MsgBox(Integer.Parse(Regex.Replace(x, "[^\d]", "")))
Ou vous pouvez utiliser le fait qu'une chaîne est un tableau de caractères.
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;
vous donnera ce numéro sous forme de chaîne. Int32.Parse (resultString) vous donnera alors le numéro.
Vous pouvez réellement combiner certaines de ces réponses individuelles pour créer une solution sur une seule ligne qui retournera soit un entier avec la valeur 0, soit un entier qui est la concaténation de tous les nombres de la chaîne. Je ne sais pas à quel point c'est utile, cependant - cela a commencé comme une méthode pour créer une chaîne de nombres uniquement ....
Dim TestMe = CInt(Val(New Text.StringBuilder((From ch In "123abc123".ToCharArray Where IsNumeric(ch)).ToArray).ToString))
str="something1234text456"
Set RegEx = CreateObject("vbscript.regexp")
RegEx.Pattern = "[^\d+]"
RegEx.IgnoreCase = True
RegEx.Global = True
numbers=RegEx.Replace(str, "")(0)
msgbox numbers
Fonction qui renvoie une chaîne sans chiffres
Public Function _RemoveNonDigitCharacters(S As String) As String
Return New String(S.Where(Function(x As Char) System.Char.IsDigit(x)).ToArray)
End Function
Pour une approche de recherche linéaire, vous pouvez utiliser cet algorithme, il est en C # mais peut facilement être traduit en vb.net, j'espère que cela aide.
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);
}