Remova o último caractere específico em uma string c #


87

Eu uso WinForms c #. Tenho um valor de string como abaixo,

string Something = "1,5,12,34,";

Preciso remover a última vírgula em uma string. Então, como posso excluí-lo?


16
Por que você tem tal string? Suponho que seja por causa de um loop que concatena vírgulas em ints. Você pode usar em seu string.Join(",", ints)lugar. Isso evita vírgulas à direita em primeiro lugar.
Tim Schmelter

Respostas:


258

Experimente string.TrimEnd():

Something = Something.TrimEnd(',');

5
Essa é a melhor solução porque funciona para todas as strings, incluindo situações em que você não sabe com antecedência SE a string termina em vírgula ou não.
East of Nowhere

6
É por isso que ainda busco soluções até para coisas que eu poderia facilmente escrever. Normalmente, outra pessoa resolveu. :)
dpberry178

1
Portanto, as aspas simples não foram um erro. Hoje eu aprendi que char e string são definidos com aspas simples e duplas, respectivamente.
egmfrs

20

A resposta de King King está certa. Além disso, o comentário de Tim Schmelter também é uma boa sugestão no seu caso.

Mas se você realmente deseja remover a última vírgula em uma string , você deve encontrar o índice da última vírgula e remover like;

string s = "1,5,12,34,12345";
int index = s.LastIndexOf(',');
Console.WriteLine(s.Remove(index, 1));

A saída será;

1,5,12,3412345

Aqui a demonstration.

É muito improvável que você queira assim, mas eu quero apontar. E lembre-se, o String.Removemétodo não remove nenhum caractere da string original, ele retorna uma nova string.


5

Tentar string.Remove();

string str = "1,5,12,34,";
string removecomma = str.Remove(str.Length-1);
MessageBox.Show(removecomma);

3

O método TrimEnd usa uma matriz de caracteres de entrada e não uma string. O código abaixo de Dot Net Perls , mostra um exemplo mais eficiente de como executar a mesma funcionalidade do TrimEnd.

static string TrimTrailingChars(string value)
{
    int removeLength = 0;
    for (int i = value.Length - 1; i >= 0; i--)
    {
        char let = value[i];
        if (let == '?' || let == '!' || let == '.')
        {
            removeLength++;
        }
        else
        {
            break;
        }
    }
    if (removeLength > 0)
    {
        return value.Substring(0, value.Length - removeLength);
    }
    return value;
}

1

Ou você pode convertê-lo em Char Array primeiro:

string Something = "1,5,12,34,";
char[] SomeGoodThing=Something.ToCharArray[];

Agora você tem cada personagem indexed:

SomeGoodThing[0] -> '1'
SomeGoodThing[1] -> ','

Brinque com isso


1

Experimente abaixo

Something..TrimEnd (",". ToCharArray ());


0
Dim psValue As String = "1,5,12,34,123,12"
psValue = psValue.Substring(0, psValue.LastIndexOf(","))

resultado:

1,5,12,34,123

A pergunta era sobre C #, não VB.
metabuddy
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.