Tengo esta cadena 123abc123 ¿cómo puedo obtener sólo enteros de esta cadena?

Por ejemplo, convertir 123abc123 a 123123.

Lo que he intentado:

Integer.Parse(abc)
InformationsquelleAutor Usr | 2012-11-01

5 Comentarios

  1. 2

    el método adecuado para extraer los números enteros es el uso de isNumbric función:

    Dim str As String = "123abc123"
    Dim Res As String
    For Each c As Char In str
        If IsNumeric(c) Then
            Res = Res & c
        End If
    Next
    MessageBox.Show(Res)

    de otra manera:

    Private Shared Function GetIntOnly(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
    • gracias de nuevo. ¿cómo puedo convertir la Res cadena a número entero?
    • de esta manera: Integer.Prasio(String)
    • tal vez Parse? Mi corrector ortográfico sugiere sin embargo Praise.
    • opss < / li>, mi error.
    • Una palabra de precaución: Este método hace un montón de conversión… Cada personaje estará encuadrado en un objeto en el heap para ser enviados a la IsNumeric método, entonces la concatenación de cada dígito de la cadena crea una nueva cadena. La concatenación de cadenas de manera que sólo debe ser utilizado cuando usted sabe que las cadenas nunca puede ser largo, como se pone tremendamente lento con cadenas más largas.
    • bien, revise mi actualización.

  2. 4

    Usted podría utilizar Char.IsDigit

    Dim str = "123abc123"
    Dim onlyDigits = New String(str.Where(Function(c) Char.IsDigit(c)).ToArray())
    Dim num = Int32.Parse(onlyDigits)
    • no VB apoyo de la sintaxis como str.Where(Char.IsDigit)?
    • En VB tendría que escribir str.Where(addressOf Char.IsDigit)
    • hay un error : ‘onlyDigits’ no se ha declarado. Puede ser inaccesible debido a su nivel de protección (gracias a)
    • estoy usando el framework 4
    • ok, gracias. voy a tratar.
  3. 2
        Dim input As String = "123abc456"
        Dim reg As New Regex("[^0-9]")
        input = reg.Replace(input, "")
        Dim output As Integer
        Integer.TryParse(input, output)
    • usted no deberíamos ignorar el resultado de TryParse, mejor dejar que se choque con sólo Parse. todavía +1
    • se supone que para comprobar la salida si el tryparse es cierto.
    • su forma de obras. gracias.
  4. 0

    Puede utilizar una expresión regular con el patrón de \D para que coincida con la no-dígitos y caracteres quitarlos, a continuación, analizar el resto de la cadena:

    Dim input As String = "123abc123"
    
    Dim n As Integer = Int32.Parse(Regex.Replace(input, "\D", ""))
  5. 0

    También puede utilizar FindAll para extraer necesarios cosas. también debemos considerar Val función de manejar para una cadena vacía.

        Dim str As String = "123abc123"
        Dim i As Integer = Integer.Parse(Val(New String(Array.FindAll(str.ToArray, Function(c) "0123456789".Contains(c)))))

Dejar respuesta

Please enter your comment!
Please enter your name here