如何去除字符串开头的逗号

12

我有一个字符串如下所示。

,liger, unicorn, snipe

在我熟悉的其他语言中,我可以只用 string.trim(",") 来完成。但在 C# 中该怎么做呢?

谢谢。


对于 StartTrim 函数已经有了很多争论。正如一些人指出的那样,StartTrim 不会影响主要变量。然而,考虑到数据的构造与问题,我对选择哪个答案感到犹豫不决。确实,问题只想去掉第一个字符而不是最后一个(如果有的话),但数据末尾永远不会有“,”。因此,说了这么多,我将接受第一个回答,即使用 StartTrim 分配给一个新变量。


建议添加“.net”标签,因为这不是特定于语言的。 - Jay Bazuzi
85次浏览,10个答案,却没有一个人认为这个问题值得点赞+1? - Keng
@Keng 可能是因为这种东西对于C#开发者来说有点琐碎。 - chakrit
这不就是重点吗?对于某些人来说,所有事情都是微不足道的。 - Keng
17个回答

21
string s = ",liger, unicorn, snipe";
s.TrimStart(',');

这个方法会修改字符串吗?难道不应该重新赋值给s,例如 s = s.TrimStart('/') 吗? - chakrit
不,字符串是不可变的。所有操作函数都会返回一个应用了更改的新字符串。 - justin.m.chase
为什么这个答案比被选中的更好?观察到以下情况:1. 这个用户是否因为拥有更多的stackoverflow好友和/或超过15,000分而获得更多积分,而原帖作者只有不到2,000分? - Tom Stickel

17
string sample = ",liger, unicorn, snipe";
sample = sample.TrimStart(','); // to remove just the first comma

或者说:

sample = sample.Trim().TrimStart(','); // to remove any whitespace and then the first comma

很棒的答案,我还加入了TrimEnd。sample.Trim().TrimStart(',').TrimEnd(','); - Tom Stickel

4

.net字符串可以使用Trim()和TrimStart()。由于它需要params,您可以这样编写:

",liger, unicorn, snipe".TrimStart(',')

如果您需要修剪多个字符,可以这样写:

",liger, unicorn, snipe".TrimStart(",; ".ToCharArray())

哇..那个将字符串转换为字符数组的技巧真是一个我以前从未见过的好办法。 - chakrit
新[]{',',';',' '} - justin.m.chase

3

以下是一个简单的方法,可以避免一开始就产生前导逗号:

string[] animals = { "liger", "unicorn", "snipe" };
string joined = string.Join(", ", animals);

3

string.TrimStart(',')会去掉逗号,但由于逗号后面有空格,因此在分割操作中可能会出现问题。最好只使用单个逗号进行拆分或使用

Split(", ".ToCharArray(),StringSplitOptions.RemoveEmptyEntries);


你是个英雄,伙计。谢谢! - Rohan Rao

1
请注意,原始字符串不会被更改,Trim 函数将返回一个新的字符串:
string s1 = ",abc,d";
string s2 = s1.TrimStart(",".ToCharArray());
Console.WriteLine("s1 = {0}", s1);
Console.WriteLine("s2 = {0}", s2);

打印:

s1 = ,abc,d
s2 = abc,d

1
string s = ",liger, unicorn, snipe";
s = s.TrimStart(',');

将TrimStart的结果分配给变量非常重要。如 TrimStart页面所述,"此方法不会修改当前实例的值。而是返回一个新的字符串..."。

在.NET中,字符串是不可变的。


1
你可以使用这个

,liger, unicorn, snipe".TrimStart(',');


1

",liger, unicorn, snipe".Trim(',') -> "liger, unicorn, snipe"


问题要求去除“前导逗号”,但Trim()函数“从当前的字符串对象中删除所有前导和尾随的指定字符的出现”。请参考:http://msdn.microsoft.com/en-us/library/system.string.trim.aspx - Andrew

1
尝试使用 string.Trim(',') 看看是否能达到你想要的效果。

问题要求去除“前导逗号”,但Trim()“从当前字符串对象中删除一组指定字符的所有前导和尾随出现。”http://msdn.microsoft.com/en-us/library/system.string.trim.aspx - Andrew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接