从特定索引处删除字符串中的字符

25
在C#中是否有从字符串中删除特定索引的功能,例如:
string s = "This is string";

s.RemoveAt(2);
现在 s 是 "Ths is string"
6个回答

34
string s = "This is string";
s = s.Remove(2, 1);

输出: Ths is string

第一个参数是要删除字符的起始索引第二个参数是您想要删除的字符数


9
正如其他人所说,C#中有一个Remove方法。其他帖子没有解释的是,在C#中,字符串是不可变的,你不能改变它们。
当你调用Remove时,它实际上返回一个新字符串;它不会修改现有字符串。你需要确保获取Remove的输出并将其赋值给变量或返回它...仅仅调用Remove本身不会改变字符串。

3
您可以使用Remove方法编写自己的扩展程序:
public static class MyStringExtensions
{
     public static string RemoveAt(this string s, int index)
     {
         return s.Remove(index, 1);
     }
}

用法:

string s = "This is string";
s = s.RemoveAt(2);

1

你也可以使用正则表达式。

Console.WriteLine(Regex.Replace("This is string", @"(?<=^.{2}).", ""));

这将从开头删除第三个字符。

演示


1
一个正则表达式在这种情况下是过度的。 - Daniel Mann
1
是的,我同意正则表达式有些过度。我认为OP是在寻求可能性。 - Avinash Raj
2
好消息是,我认为这对几乎所有的编程语言都适用。我不知道你发布了这个可能性,太酷了。 - t3chb0t

0

0
人们提到在C#中字符串是不可变的,所以你需要进行编辑和重新赋值,像这样:
string myString = "mon, ";
// Before it was mon,
myString = myString.Remove(3, 2);
// After it is mon

Remove()的第一个参数是开始删除的位置,第二个参数是要删除的字符数(包括在内)。

参考:https://learn.microsoft.com/en-us/dotnet/api/system.string.remove?view=net-7.0


除了指向MS文档的链接外,这个答案提供的信息与被接受的答案相同。 - undefined

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