删除字符串C#中的最后一个特定字符


87

我使用WinForms c#。我的字符串值如下

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

我需要删除字符串中的最后一个逗号。那我怎么删除它呢?


16
你为什么有这样的string?我假设是因为有一个将逗号连接到ints的循环。您可以string.Join(",", ints)改用。首先避免了逗号结尾。
蒂姆·施密特

Answers:


258

尝试string.TrimEnd()

Something = Something.TrimEnd(',');

5
这是最好的解决方案,因为它适用于所有字符串,包括您可能不提前知道字符串是否以逗号结尾的情况。
东方之地

6
这就是为什么我仍在寻找解决方案的原因,即使我可以轻松编写自己的东西也是如此。通常有人解决了它。:)
dpberry178 '19

1
因此,单引号不是一个错误。今天,我了解到char和string分别用单引号和双引号定义。
egmfrs

20

国王国王的答案当然是正确的。另外,蒂姆·施梅尔特(Tim Schmelter)的评论也很适合您。

但是,如果要真正 删除字符串中的最后一个逗号,则应找到最后一个逗号的索引并删除like;

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

输出将是;

1,5,12,3412345

这里一个demonstration

您不太可能希望这样,但我想指出这一点。请记住,String.Remove方法不会删除原始字符串中的任何字符,它会返回新字符串。


5

尝试 string.Remove();

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

3

TrimEnd方法采用输入字符数组而不是字符串。下面来自Dot Net Perls的代码显示了一个如何执行与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

或者,您可以先通过以下方式将其转换为Char Array:

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

现在您有了每个角色indexed

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

在它周围玩



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

输出:

1,5,12,34,123

问题是关于C#而不是VB。
metabuddy '18 -10-26
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.