Eu tenho o seguinte:
string test = "9586-202-10072"
Como eu colocaria todos os caracteres à direita do final, -então 10072. O número de caracteres é sempre diferente à direita do último travessão.
Como isso pode ser feito?
Eu tenho o seguinte:
string test = "9586-202-10072"
Como eu colocaria todos os caracteres à direita do final, -então 10072. O número de caracteres é sempre diferente à direita do último travessão.
Como isso pode ser feito?
Respostas:
Você pode obter a posição do último -com str.LastIndexOf('-'). Portanto, a próxima etapa é óbvia:
var result = str.Substring(str.LastIndexOf('-') + 1);
Correção :
Como Brian afirma abaixo, usar isso em uma string sem traços resultará no retorno da mesma string.
LastIndexOfretorna -1 se nada for encontrado (este é um comportamento documentado, portanto, é seguro confiar nele). str.Substring(1-1)dá a você uma string igual a str. Sem surpresas, aqui.
Você poderia usar o LINQ e evitar a análise explícita:
string test = "9586-202-10072";
string lastFragment = test.Split('-').Last();
Console.WriteLine(lastFragment);
Posso ver que este post foi visto mais de 46.000 vezes. Aposto que muitos dos 46.000 espectadores estão fazendo essa pergunta simplesmente porque querem apenas o nome do arquivo ... e essas respostas podem ser uma toca de coelho se você não puder fazer sua substring literalmente usando o símbolo de arroba.
Se você simplesmente deseja obter o nome do arquivo, há uma resposta simples que deve ser mencionada aqui. Mesmo que não seja a resposta precisa para a pergunta.
result = Path.GetFileName(fileName);
consulte https://msdn.microsoft.com/en-us/library/system.io.path.getfilename(v=vs.110).aspx
Veja o 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 );
}
Criei uma extensão de string para isso, espero que ajude.
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;
}
strfor nulo ou se não contiver nenhum hífen. (No caso em que não há hífen, ele não lança; retorna a string de origem inteira.)