Remova os últimos três caracteres de uma string
Quero remover os três últimos caracteres de uma string:
string myString = "abcdxxx";
Observe que a string é um dado dinâmico.
— user1765862
Leia os últimos 3 caracteres = uma coisa, remova os últimos 3 caracteres = outra. Qual?
leia os últimos 3 caracteres da string [pergunta feita inicialmente]
Você pode usar string.Substring e fornecer o índice inicial e ele obterá a substring começando do índice dado até o fim.
myString.Substring(myString.Length-3)
Recupera uma substring desta instância. A substring começa em uma posição de caractere especificada. MSDN
Editar , para postagem atualizada
Remova os últimos 3 caracteres da string [pergunta atualizada]
Para remover os últimos três caracteres da string, você pode usar string.Substring (Int32, Int32) e fornecer o índice inicial 0e o índice final três a menos que o comprimento da string . Ele obterá a substring antes dos três últimos caracteres.
Método String.Substring (Int32, Int32)
Recupera uma substring desta instância. A substring começa em uma posição de caractere especificada e tem um comprimento especificado.
Você também pode usar o método String.Remove (Int32) para remover os últimos três caracteres, passando o índice inicial como comprimento - 3 , ele removerá deste ponto ao final da string.
myString = myString.Remove(myString.Length-3)
Retorna uma nova string na qual todos os caracteres na instância atual, começando em uma posição especificada e continuando até a última posição, foram excluídos
esta não é a resposta
— freios
Obrigado @braks, a pergunta feita inicialmente foi "ler os últimos 3 caracteres da string" Isso é editado posteriormente e eu não sabia, consulte o histórico de edição da pergunta. Seu comentário me ajudou a corrigir minha resposta que ficou errada após a edição da pergunta.
myString = myString.Remove(myString.Length - 3, 3);
Li tudo isso, mas queria algo um pouco mais elegante. Apenas para remover um certo número de caracteres do final de uma string:
string.Concat("hello".Reverse().Skip(3).Reverse());
— Byron Katz
Este é bastante "criativo", pois não precisa do comprimento da string, mas a operação reversa provavelmente é mais cara.
— Aleksandar,
Reverter uma string é definitivamente mais caro do que contar seus caracteres. Uma nova string inteira precisa ser construída, então o original copiado para ela, então a string original precisa ser coletada como lixo.
As strings @MattGregory são imutáveis: Remover, Substring, qualquer função de string gera uma nova string. Substituir o ponteiro original sempre causa a coleta de lixo. Isso ainda é mais lento, pois Enumerable.Reversearmazena a string em um char[], em seguida, em um novo char[]que é 3 mais curto e, em seguida, gera um novo string(com outro internamente char[]). Uma abordagem melhor seria new string("hello".Reverse().Skip(3)), ou apenas escrever sua própria função de extensão de string AllBut(this string in, int i)que use Substring.
@MattGregory Não é nem mesmo "contar" os caracteres de uma string, uma string tem seus Lengtharmazenados.
Agora também temos .SkipLast(n). Não há necessidade de reverter nada. "hello".SkipLast(3)dá"he"
— AjitZero
myString.Remove(myString.Length-3);
myString = myString.Remove(myString.Length - 3)isso é.
string test = "abcdxxx";
test = test.Remove(test.Length - 3);
//output : abcd
— Jaidi Wael Leila
Você pode usar String.Removepara excluir de uma posição especificada até o final da string.
myString = myString.Remove(myString.Length - 3);
Provavelmente não é exatamente o que você está procurando, já que diz que são "dados dinâmicos", mas, dada sua string de exemplo, isso também funciona:
? "abcdxxx".TrimEnd('x');
str= str.Remove(str.Length - 3);
myString.Substring(myString.Length - 3, 3)
Aqui estão alguns exemplos de substring. >>
Consulte aqueles.
— Trabalhador autonomo
if (myString.Length<3)
string newString=myString.Remove(myString.Length - 3, 3);
— Frank59
Remova os últimos caracteres de uma string
TXTB_DateofReiumbursement.Text = (gvFinance.SelectedRow.FindControl("lblDate_of_Reimbursement") as Label).Text.Remove(10)
.Text.Remove(10)// usado para remover o texto do índice 10 ao final
— subramanya46
O novo operador da linha C # 8.0 pode ser um ótimo atalho para isso.
var shortenedString = myString[0..^1]
— vullnetyy
items.Remove(items.Length - 3)
string.Remove()remove todos os itens desse índice até o fim. items.length - 3obtém o índice 3 caracteres do final
— Ben Rauzi
Fácil. text = text.remove(text.length - 3). Eu subtraí 3 porque a Removefunção remove todos os itens desse índice para o final da string que étext.length . Portanto, se eu subtrair 3, obtenho a string com 3 caracteres removidos dela.
Você pode generalizar isso para remover acaracteres do final da string, assim:
text = text.remove(text.length - a)
Então o que fiz foi a mesma lógica. A removefunção remove todos os itens de seu interior até o final da string, que é o comprimento do texto. Então, se eu subtrair ado comprimento da corda, isso vai me dar a corda coma caracteres removidos.
Portanto, não funciona apenas para 3, funciona para todos os inteiros positivos, exceto se o comprimento da string for menor ou igual a a, nesse caso ela retornará um número negativo ou 0.