删除字符串的最后一个字符

Kiw*_*isi 242 c# string char

我正在检索列表中的很多信息,链接到数据库.

我想为连接到网站的人创建一组字符串.

我用它来测试...但这不是动态的,所以它真的很糟糕:

string strgroupids = "6";
Run Code Online (Sandbox Code Playgroud)

我现在想用这个.但返回的字符串是这样的1,2,3,4,5,

groupIds.ForEach((g) =>
{
    strgroupids = strgroupids  + g.ToString() + ",";
    strgroupids.TrimEnd(',');
});

strgroupids.TrimEnd(new char[] { ',' });
Run Code Online (Sandbox Code Playgroud)

我想删除,后,5但它肯定不起作用..有人能帮帮我吗?

sll*_*sll 569

strgroupids = strgroupids.Remove(strgroupids.Length - 1);
Run Code Online (Sandbox Code Playgroud)

MSDN:

String.Remove(Int32)已:

从指定位置开始并从最后一个位置开始删除此字符串中的所有字符


Øyv*_*hen 83

怎么样这样做呢

strgroupids = string.Join( ",", groupIds );
Run Code Online (Sandbox Code Playgroud)

一个很多清洁.

它将所有元素追加里面groupIds','每个之间,但它不会把一个','结尾.

  • 仅限于C#4.0.在C#3.5中,您必须将groupIds转换为数组. (3认同)
  • 这个将解决OP问题. (3认同)

And*_*son 27

c#中的字符串是不可变的.当您的代码做strgroupids.TrimEnd(',');strgroupids.TrimEnd(new char[] { ',' });strgroupids字符串不被修改.

你需要做一些事情strgroupids = strgroupids.TrimEnd(',');.

这里引用:

字符串是不可变的 - 在创建对象后,字符串对象的内容无法更改,尽管语法使其看起来好像可以执行此操作.例如,当您编写此代码时,编译器实际上会创建一个新的字符串对象来保存新的字符序列,并将该新对象分配给b.然后字符串"h"有资格进行垃圾回收.


Dod*_*bit 10

在 C# 8中引入了范围和索引,为我们提供了一个新的更简洁的解决方案:

strgroupids = strgroupids[..^1];
Run Code Online (Sandbox Code Playgroud)


nzn*_*oor 9

添加扩展方法.

public static string RemoveLast(this string text, string character)
{
    if(text.Length < 1) return text;
    return text.Remove(text.ToString().LastIndexOf(character), character.Length);
}
Run Code Online (Sandbox Code Playgroud)

然后使用:

yourString.RemoveLast(",");
Run Code Online (Sandbox Code Playgroud)


Kie*_*one 7

删除任何尾随逗号:

while (strgroupids.EndsWith(","))
    strgroupids = strgroupids.Substring(0, strgroupids.Length - 1);
Run Code Online (Sandbox Code Playgroud)

这是倒退的,你编写了首先添加逗号的代码.你应该使用string.Join(",",g),假设g是a string[].给它一个更好的名字g!


tan*_*zer 5

sll 解决方案的补充:最好修剪字符串,以防末尾有一些空格。

strgroupids = strgroupids.Remove(strgroupids.Trim().Length - 1);
Run Code Online (Sandbox Code Playgroud)