2010-05-11 38 views
18

Quiero obtener los últimos 5 dígitos/caracteres de una cadena. Por ejemplo, desde "I will be going to school in 2011!", me gustaría obtener "2011!".Obtenga los últimos 5 caracteres en una cadena

¿Alguna idea? Sé que Visual Basic tiene Right(string, 5); esto no funcionó para mí y me dio un error.

+1

¿Cuál fue el error? Tal vez también publique un fragmento de código ... – NealB

+0

Creo que la función Right() ya no se usa en visual studio 2008. – NULL

+0

En .NET 4.0 (con Visual Studio 2012) 'Right (myString, 5)' funciona y lo estoy usando con éxito. – Danwize

Respuesta

47
str.Substring(str.Length - 5) 
+0

¡maravilloso, funciona como un encanto! – NULL

+13

simplemente asegúrate de que el 'str.Length - 5 'anterior no dé como resultado un valor negativo. – Jaans

5

comprueba los errores de verificación:

Dim result As String = str 
If str.Length > 5 Then 
    result = str.Substring(str.Length - 5) 
End If 
22

error:

result = str.Substring(Math.Max(0, str.Length - 5)) 
3

en VB 2008 (VB 9.0) y más tarde, el prefijo derecha() como Microsoft.VisualBasic.Right (cadena, número de caracteres)

Dim str como String = "Hello World"

MsgBox (Microsoft.VisualBasic.Right (str, 5))

'World"

Lo mismo va para la izquierda() también.

0

Abrí este hilo buscando una solución rápida a una pregunta simple, pero encontré que las respuestas aquí no eran útiles o demasiado complicadas. La mejor forma de obtener los últimos 5 caracteres de una cadena es, de hecho, utilizar el método Right(). Aquí está un ejemplo sencillo:

Dim sMyString, sLast5 As String 

sMyString = "I will be going to school in 2011!" 
sLast5 = Right(sMyString, - 5) 
MsgBox("sLast5 = " & sLast5) 

Si usted está recibiendo un error entonces probablemente hay algo mal con su sintaxis. Además, con el método Right() no necesita preocuparse demasiado por ir más allá o por debajo de la longitud de la cadena. En mi ejemplo, podría escribir 10000 en lugar de 5 y simplemente MsgBox sería la cadena completa, o si sMyString era NULL o "", el cuadro de mensaje aparecería sin nada.

1

La respuesta aceptada de esta publicación provocará un error en el caso cuando la longitud de la cadena es menos de 5. Así que tengo una mejor solución. Podemos utilizar este código simple:

If(str.Length <= 5, str, str.Substring(str.Length - 5)) 

Puede probarlo con una cadena de longitud variable.

Dim str, result As String 
    str = "11!" 
    result = If(str.Length <= 5, str, str.Substring(str.Length - 5)) 
    MessageBox.Show(result) 
    str = "I will be going to school in 2011!" 
    result = If(str.Length <= 5, str, str.Substring(str.Length - 5)) 
    MessageBox.Show(result) 

Otra solución simple pero eficaz que he encontrado:

str.Substring (str.length - Math.min (5, str.length))

0

Dim a As String = Microsoft .VisualBasic.right ("¡Iré a la escuela en 2011!", 5) MsgBox ("el valor es:" & a)

Cuestiones relacionadas