Tengo lo siguiente:
string test = "9586-202-10072"
¿Cómo puedo -colocar todos los caracteres a la derecha de la final, de modo que 10072? El número de caracteres siempre es diferente a la derecha del último guión.
¿Cómo se puede hacer esto?
Tengo lo siguiente:
string test = "9586-202-10072"
¿Cómo puedo -colocar todos los caracteres a la derecha de la final, de modo que 10072? El número de caracteres siempre es diferente a la derecha del último guión.
¿Cómo se puede hacer esto?
Respuestas:
Puedes conseguir la posición del último -con str.LastIndexOf('-'). Entonces, el siguiente paso es obvio:
var result = str.Substring(str.LastIndexOf('-') + 1);
Corrección :
Como dice Brian a continuación, usar esto en una cadena sin guiones dará como resultado que se devuelva la misma cadena.
LastIndexOfdevuelve -1 si no se encuentra nada (este es un comportamiento documentado, por lo que es seguro confiar en él). str.Substring(1-1)te da una cadena igual a str. Sin sorpresas, aquí.
Puede usar LINQ y ahorrarse el análisis explícito:
string test = "9586-202-10072";
string lastFragment = test.Split('-').Last();
Console.WriteLine(lastFragment);
Puedo ver que esta publicación fue vista más de 46,000 veces. Apuesto a que muchos de los 46.000 espectadores están haciendo esta pregunta simplemente porque solo quieren el nombre del archivo ... y estas respuestas pueden ser un agujero de conejo si no puede hacer su subcadena textualmente usando el signo arroba.
Si simplemente desea obtener el nombre del archivo, entonces hay una respuesta simple que debe mencionarse aquí. Incluso si no es la respuesta precisa a la pregunta.
result = Path.GetFileName(fileName);
ver https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx
Consulte el método String.lastIndexOf
string atest = "9586-202-10072";
int indexOfHyphen = atest.LastIndexOf("-");
if (indexOfHyphen >= 0)
{
string contentAfterLastHyphen = atest.Substring(indexOfHyphen + 1);
Console.WriteLine(contentAfterLastHyphen );
}
Creé una extensión de cadena para esto, espero que ayude.
public static string GetStringAfterChar(this string value, char substring)
{
if (!string.IsNullOrWhiteSpace(value))
{
var index = value.LastIndexOf(substring);
return index > 0 ? value.Substring(index + 1) : value;
}
return string.Empty;
}
stres nulo o si no contiene ningún guion. (En el caso de que no haya un guión, no se arroja; devuelve la cadena de origen completa.)