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

本文关键字:字符串 字符 删除 索引 | 更新日期: 2023-09-27 18:35:28

例如,C# 中是否有任何函数可以从特定索引上的字符串中删除

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

s 现在是"Ths 是字符串"

???

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

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

输出 : Ths is string

1st parameter是要从中删除字符的starting index,第二个参数是要删除的number of character

正如许多其他人所说,有一种Remove方法。其他帖子没有解释的是,C# 中的字符串是不可变的——你不能改变它们。

当你调用Remove时,它实际上返回一个新字符串;它不会修改现有的字符串。您需要确保获取Remove的输出并将其分配给变量或返回它......仅自行调用Remove不会更改字符串。

您可以使用 Remove 方法为此编写 on 扩展:

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);
您也可以

使用正则表达式。

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

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

演示

String.Remove方法:

s = s.Remove(2, 1);

就像人们提到的那样,字符串在 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